WPF的DataGrid中如何在Binding中能逻辑判断true/false,再显示具体的值??

CCDDzclxy 2019-08-06 11:08:43
RT
WPF新人...

举个例子:
1、界面 控件
<DataGrid x:Name="datagrid1">
<DataGrid.Columns>
<DataGridTextColumn Header="状态" Binding="{Binding ??zhuangtai???}"/>
</DataGrid.Columns>
</DataGrid>

2、数据
class data1
{
public bool zhuangtai {get; set;}
}

2.1、数据list:
List<data1> list = new List<data1>();
//向 list中添加一些数据
... ...

2.2、DataGrid的数据是这样设置的
datagrid1.ItemsSource = list;


问题就是 DataGrid的 列"状态" 的 Binding怎么写,能够使得 控件能够动态的根据 类属性zhuangtai的值 动态的显示 "在线"或是"离线"??

任何链接、书 推荐 都可以,谢谢大家先











...全文
1468 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
CCDDzclxy 2019-08-07
  • 打赏
  • 举报
回复
引用 8 楼 E次奥 的回复:

 <TextBlock.Style>
                <Style TargetType="TextBlock">
                    <Setter Property="Text" Value="默认值"/>
                    <Style.Triggers>
                        <!--BoolProperty是判断的属性-->
                        <DataTrigger Binding="{Binding BoolProperty}" Value="True">
                            <Setter Property="Text" Value="一个绑定的属性值"/>
                        </DataTrigger>
                        <!--BoolProperty是判断的属性-->
                        <DataTrigger Binding="{Binding BoolProperty}" Value="False">
                            <Setter Property="Text" Value="另一个绑定的属性值"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
E次奥 2019-08-07
  • 打赏
  • 举报
回复

<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="默认值"/>
<Style.Triggers>
<!--BoolProperty是判断的属性-->
<DataTrigger Binding="{Binding BoolProperty}" Value="True">
<Setter Property="Text" Value="一个绑定的属性值"/>
</DataTrigger>
<!--BoolProperty是判断的属性-->
<DataTrigger Binding="{Binding BoolProperty}" Value="False">
<Setter Property="Text" Value="另一个绑定的属性值"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
E次奥 2019-08-07
  • 打赏
  • 举报
回复
用DataTrigger更简单,不用写Converter
CCDDzclxy 2019-08-06
  • 打赏
  • 举报
回复
引用 1 楼 weixin_38641834 的回复:
首先,绑定的集合换成ObservableCollection<T>,同时你的Class data1类需要实现INotifiPorpertyChanged接口 如果你要用TextColumn 绑定bool类型,你需要从IValueConverter接口继承,实现一个string与bool互转的转换器 最后绑定的把表达式为

<DataGridTextColumn  Binding="{Binding zhuangtai ,Converter={StaticResource MyConverter}}"/>
在资源文件里,你需要把你自定义的Converter映射成MyConverter
听着好复杂啊,有 例子文章之类的 看一下吗?
Eason0807 2019-08-06
  • 打赏
  • 举报
回复
首先,绑定的集合换成ObservableCollection<T>,同时你的Class data1类需要实现INotifiPorpertyChanged接口

如果你要用TextColumn 绑定bool类型,你需要从IValueConverter接口继承,实现一个string与bool互转的转换器

最后绑定的把表达式为

<DataGridTextColumn Binding="{Binding zhuangtai ,Converter={StaticResource MyConverter}}"/>


在资源文件里,你需要把你自定义的Converter映射成MyConverter
CCDDzclxy 2019-08-06
  • 打赏
  • 举报
回复
引用 4 楼 weixin_38641834 的回复:
完全符合你需求的很难找,你研究明白Converter就行了,这个接口就两个方法,分别是源到目标的转换和目标到源的转换,如果你是单向绑定的,那么你只需要源到目标的转换就行了
好,我先 琢磨看看,不行的话 再来找你
Eason0807 2019-08-06
  • 打赏
  • 举报
回复
给你一个简单的Converter

public class MyConverter : IValueConverter
{
/// <summary>
/// 源到目标
/// </summary>
/// <param name="value"></param>
/// <param name="targetType"></param>
/// <param name="parameter"></param>
/// <param name="culture"></param>
/// <returns></returns>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool boolValue = false;
if (value != null)
boolValue = (bool)value;
return boolValue ? "在线" : "离线";
}
/// <summary>
/// 目标到源
/// </summary>
/// <param name="value"></param>
/// <param name="targetType"></param>
/// <param name="parameter"></param>
/// <param name="culture"></param>
/// <returns></returns>
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Eason0807 2019-08-06
  • 打赏
  • 举报
回复
完全符合你需求的很难找,你研究明白Converter就行了,这个接口就两个方法,分别是源到目标的转换和目标到源的转换,如果你是单向绑定的,那么你只需要源到目标的转换就行了
Eason0807 2019-08-06
  • 打赏
  • 举报
回复
Converter的作用就是把你的ture/false转成“在线”/"离线"这样的字符串

8,756

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧