c# - 如何设置DataGridTextColumn的文字颜色?

标签 c# wpf xaml wpfdatagrid datagridtextcolumn

我正在尝试更改 DataGridTextColumn 的颜色。

这是我正在做的:

<DataGridTextColumn 
    Header="Status" 
    Binding="{Binding IsActive, 
               Converter= {StaticResource BoolToStatusConverter}}"
    Foreground="{Binding Path=IsActive,
               Converter={StaticResource BoolToColorConverter}}"/>

文本设置正确,但颜色不会改变,我收到以下错误:

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or 
FrameworkContentElement for target element. BindingExpression:Path=IsActive; 
DataItem=null; target element is 'DataGridTextColumn' (HashCode=40349079); target 
property is 'Foreground' (type 'Brush')

我应该怎么做才能让它发挥作用?

最佳答案

您需要为列的 CellStyle 指定带有 DataTrigger 的样式。例如

<Page.Resources>
    <Style TargetType="DataGridCell" x:Key="ActiveCellStyle">
        <Setter Property="Foreground" Value="Blue"/>
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsActive}" Value="{x:Null}">
                <Setter Property="Foreground" Value="Green"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding IsActive}" Value="True">
                <Setter Property="Foreground" Value="Red"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
    <Converters:BoolToTextConverter 
        x:Key="BoolToStatusConverter" 
        TargetCondition="True" 
        IsMatchValue="It's active" 
        IsNotMatchValue="It's dead" />
</Page.Resources>
<Grid>
    <DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn 
                Header="Status" 
                Binding="{Binding IsActive, 
                    Converter={StaticResource BoolToStatusConverter}}" 
                CellStyle="{StaticResource ActiveCellStyle}"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

关于c# - 如何设置DataGridTextColumn的文字颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10950904/

相关文章:

javascript - 检查参数的更好方法?

c# - 单击按钮无法导航?

c# - WPF Windows 8 兼容性问题

c# - Visual Studio 重构重命名导致 XAML 文件中无法解释的属性全局替换

C#命名空间命名约定

c# - 从文件夹中获取所有 .json 文件,然后使用 C# 和 JSON.Net 序列化为单个 .Json 文件并序列化

c# - 如何在 Unity 中设置刚体的最大速度?

c# - C#中的异步图像处理

c# - 如何从主 GUI 打开新窗口并将变量传递给新窗口

wpf - WPF在触发器中设置边框背景