C# 单元格内容上的WPF DataGrid触发器
我有一个C# 单元格内容上的WPF DataGrid触发器,c#,wpf,datagrid,triggers,C#,Wpf,Datagrid,Triggers,我有一个datagrid,其中包含的值来自存储过程。所有值均设置为Bold为FontWeight 当单元格内容等于0时,我希望使文本正常。 我怎么能用扳机呢 我做了如下操作,但不起作用: <DataGrid.CellStyle> <Style TargetType="DataGridCell"> <Setter Property="FontWeight" Value="Bold" /> <Style
datagrid
,其中包含的值来自存储过程。所有值均设置为Bold
为FontWeight
当单元格内容等于0时,我希望使文本正常。
我怎么能用扳机呢
我做了如下操作,但不起作用:
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="FontWeight" Value="Bold" />
<Style.Triggers>
<Trigger Property="Content" Value="0">
<Setter Property="FontWeight" Value="Normal"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
这是一种定义该列的方法:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding DataBaseValue}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
您可以在文本框的FontWeights上添加一个绑定,该绑定带有一个与文本相关联的转换器,如果文本本身是这样的话。您不能访问DataGridCell.Content
,这样,就可以根据DataGrid使用DataTrigger
。选择EdItem.YourProperty
如下:
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="FontWeight" Value="Bold" />
<Style.Triggers>
<DataTrigger Binding="{Binding YourProperty}" Value="0">
<Setter Property="FontWeight" Value="Normal"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
你可以这样做-
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="FontWeight" Value="Bold" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Content.Text, Mode=OneWay, RelativeSource={RelativeSource Self}}" Value="0">
<Setter Property="FontWeight" Value="Normal"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
我有12列。我不想为所有列复制此代码。听起来不错,但我需要为对象的所有属性复制此代码。我不想复制12倍于我确信工作完美的代码。你的编辑工作。因此,我认为只有在XAML中才能实现这一点。是吗?我99%肯定没有;)
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Setters>
<Setter Property="FontWeight"
Value="{Binding RelativeSource={RelativeSource Self},
Path=Content.Text,
Converter={StaticResource fontWeightConverter}}" />
</Style.Setters>
</Style>
</DataGrid.CellStyle>
public class FontWeightConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
if (value != null && value.ToString() == "0")
return FontWeights.Normal;
return FontWeights.Bold;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="FontWeight" Value="Bold" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Content.Text, Mode=OneWay, RelativeSource={RelativeSource Self}}" Value="0">
<Setter Property="FontWeight" Value="Normal"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>