WPF文本DataGrid中整列的前景色

时间:2017-02-15 13:11:23

标签: c# wpf xaml datagrid

我有一个应用程序,用户可以切换到4种不同颜色主题之一。对于那些颜色主题,我使用4种不同的xaml资源字典。 此外,应用程序还使用绑定到从DB加载的数据表的datagrids。这些数据网格总是具有与其他列不同的彩色第一列。

用户切换主题时出现问题。除了第一列中的文字外,所有内容都会正确更改(根据res.dictionry中的设置)。

这是我对res中刷子的定义。字典(每个字典文件中的名称相同但颜色不同):

<SolidColorBrush x:Key="textBrush" Color="LightGreen" />

然后这是我的数据网格定义:

<DataGrid Name="coilTabDG" AutoGenerateColumns="False" Grid.Column="3" Grid.ColumnSpan="1" Grid.Row="1" Grid.RowSpan="6" HorizontalAlignment="Stretch" Margin="5,5,5,5" VerticalAlignment="Stretch" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"  ItemsSource="{Binding}" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" CanUserResizeRows="False" SelectionUnit="FullRow" HeadersVisibility="Column" >
            <DataGrid.Columns>
                <DataGridTextColumn Header="coilNumber" Width="100*" Foreground="{DynamicResource textBrush}" Binding="{Binding  Path='coilNum'}">
                </DataGridTextColumn>

                <DataGridTextColumn Header="Thickness" Width="100*" Binding="{Binding  Path='thick'}">
                </DataGridTextColumn>

                <DataGridTextColumn Header="Grade" Width="100*" Binding="{Binding  Path='grade'}">
                </DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>

你能帮助我如何通过改变颜色主题来改变这个专栏的前景吗? 感谢任何解决方案! 谢谢。

1 个答案:

答案 0 :(得分:0)

定义引用资源的单元格样式

    <Style x:Key="CurrencyCellStyle" TargetType="{x:Type DataGridCell}">
        <Setter Property="Foreground" Value="{DynamicResource textBrush}" />
    </Style>

将样式应用于列定义

<DataGridTextColumn Header="coilNumber" Width="100*" CellStyle="{StaticResource CurrencyCellStyle}" Binding="{Binding  Path='coilNum'}"/>