Kav*_*han 0 c# wpf xaml datagrid
我需要在数据网格单元格内将 0 和 1 布尔值显示为 YES 和 NO。
<DataGridTextColumn Header="Active" Binding="{Binding stuen.IsDelete}" CanUserResize="False" Width="* " HeaderStringFormat="" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
Run Code Online (Sandbox Code Playgroud)
足够简单 - 您可以使用附加属性(例如 YesNo)扩展状态模型,例如:
public string YesNo
{
get {return !IsDelete ? "No" : "Yes"}
}
Run Code Online (Sandbox Code Playgroud)
现在将您的控件绑定到 status.YesNo 而不是 status.IsDelete。
或者BooleanToYesNoConverter
- 您可以在绑定元素中使用。基本上,转换器将在 status.IsDelete = true 时返回 Yes,而在 status.IsDelete=false 时返回 No。
喜欢 :
public class BooleanToYesNoConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if((bool)value) return "Yes";
return "No"
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
/* not sure if you need convert back */
}
}
Run Code Online (Sandbox Code Playgroud)
将此转换器添加为 Xaml 中的静态资源:
<Window.Resources>
<local:BooleanToYesNoConverter x:Key="BooleanToYesNoConverter" />
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
然后将您的绑定属性更新为:
Binding="{Binding stuen.IsDelete Converter={StaticResource BooleanToYesNoConverter}}"
Run Code Online (Sandbox Code Playgroud)
其他替代解决方案是使用如下所示的触发器:
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Text" Value="" />
<Style.Triggers>
<DataTrigger Binding="{Binding status.IsDelete}" Value="Yes">
<Setter Property="Text" Value="No" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
Run Code Online (Sandbox Code Playgroud)