C# 基于WPF网格中的条件设置列文本值
我有一个整数值(0,1,2),我需要分别将文本显示为“Error,Forward,Reverse” 我可以使用GridViewDataColumn的setter属性在form.xaml中实现这一点吗?如果可以,其他值是什么。 这里对于数据列,我们必须将绑定定义为C# 基于WPF网格中的条件设置列文本值,c#,wpf,C#,Wpf,我有一个整数值(0,1,2),我需要分别将文本显示为“Error,Forward,Reverse” 我可以使用GridViewDataColumn的setter属性在form.xaml中实现这一点吗?如果可以,其他值是什么。 这里对于数据列,我们必须将绑定定义为DataMemberBinding=“{binding Direction}”,其中'Direction'是UInt16,并且此Direction属性是可观察集合的一部分。因此,对于每次更改,我都需要相应地将数据显示为字符串 我只是将网格
DataMemberBinding=“{binding Direction}”
,其中'Direction'是UInt16,并且此Direction属性是可观察集合的一部分。因此,对于每次更改,我都需要相应地将数据显示为字符串
我只是将网格中的列定义为
<telerik:GridViewDataColumn DataMemberBinding="{Binding Direction}" UniqueName= "Direction" Header="Direction" Width="85" TextAlignment="Left" HeaderTextAlignment="Center" DisplayIndex="9" IsFilteringDeferred="True" >
我如何添加触发器来实现这一点?您可以使用DataTrigger/IValueConvertor来实现 DataTrigger:
<Style.Triggers>
<!-- 1st trigger -->
<DataTrigger Binding="{Binding Path=Direction}" Value="0">
<Setter Property="Text" Value="Error"/>
</DataTrigger>
<!-- 2nd trigger -->
<DataTrigger Binding="{Binding Path=Direction}" Value="1">
<Setter Property="Text" Value="Forward"/>
</DataTrigger>
<!-- 3rd trigger -->
<DataTrigger Binding="{Binding Path=Direction}" Value="2">
<Setter Property="Text" Value="Reverse"/>
</DataTrigger>
</Style.Triggers>
<telerik:GridViewDataColumn Header="Direction" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Direction, Converter={StaticResource IntoToDataConvertor}, Mode=Default}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
转换器:
<telerik:GridViewDataColumn DataMemberBinding="{Binding Direction,Convertor={StaticResource InttoDateConverter }" UniqueName= "Direction" Header="Direction" Width="85" TextAlignment="Left" HeaderTextAlignment="Center" DisplayIndex="9" IsFilteringDeferred="True" >
public class InttoDateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
switch (value.ToString().ToLower())
{
case "0":
return "Error!";
case "1":
return "Forward";
default:
return "Reverse";
}
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
// only for two way binding
}
}
公共类InttoDateConverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、,
System.Globalization.culture(信息文化)
{
开关(value.ToString().ToLower())
{
案例“0”:
返回“错误!”;
案例“1”:
返回“向前”;
违约:
返回“反向”;
}
}
公共对象转换回(对象值、类型targetType、对象参数、,
System.Globalization.culture(信息文化)
{
//仅适用于双向装订
}
}
数据网格列绑定:
<Style.Triggers>
<!-- 1st trigger -->
<DataTrigger Binding="{Binding Path=Direction}" Value="0">
<Setter Property="Text" Value="Error"/>
</DataTrigger>
<!-- 2nd trigger -->
<DataTrigger Binding="{Binding Path=Direction}" Value="1">
<Setter Property="Text" Value="Forward"/>
</DataTrigger>
<!-- 3rd trigger -->
<DataTrigger Binding="{Binding Path=Direction}" Value="2">
<Setter Property="Text" Value="Reverse"/>
</DataTrigger>
</Style.Triggers>
<telerik:GridViewDataColumn Header="Direction" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Direction, Converter={StaticResource IntoToDataConvertor}, Mode=Default}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
您可以通过多种方式实现这一点。转换器、触发器或ViewModel中的附加属性。很难向您推荐最佳解决方案,因为您没有发布code@lokusking根据你的评论编辑了我的问题。我还没有写任何关于这方面的代码。如何使用触发器来完成此操作?已尝试使用以下代码进行转换xmlns:custom=“clr namespace:MyForm;assembly=“>方法被调用,但文本未按预期更改。我缺少的是什么?您可以最后一个解决方案DataGridColumn直接将不支持转换器。定义celltemplate然后重试itUsing Style选项也出现了一些错误,因为Style不是GridviewDataColumn的属性。。这是否也需要对工作进行任何其他更改?