gpt4 book ai didi

c# - WPF DataGrid 触发单元格内容

转载 作者:太空狗 更新时间:2023-10-29 20:04:29 25 4
gpt4 key购买 nike

我有一个 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>

最佳答案

您不能以这种方式访问​​ DataGridCell.Content,而是根据您的 DataGrid.SelectedItem.YourProperty 使用 DataTrigger,如下所示:

    <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>

编辑:

假设您的 DataGridColumns 是基于文本的,那么您可以使用如下所示的 IValueConverter:

请注意,如果某些数据网格列不是基于文本的,则此解决方案仍然适用于那些基于文本的列。

Xaml:

<Window.Resources>
<local:FontWeightConverter x:Key="fontWeightConverter"/>
</Window.Resources>

...

    <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();
}
}

关于c# - WPF DataGrid 触发单元格内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30886120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com