2017-02-15 8 views
0

У меня есть приложение, которое пользователь может переключиться на одну из 4-х цветных тем. Для этих цветовых тем я использую 4 разных словаря ресурса xaml. Также приложение использует datagrids, привязанные к datatables, загруженным из DB. Эти datagrids всегда имеют цветной первый столбец, чем другие столбцы.WPF Text цвет переднего плана в целом столбца в DataGrid

Проблема возникает, когда пользователь переключает тему. Все изменяется правильно (в соответствии с настройками в словарной книге), кроме текста в первом столбце.

Вот мое определение кисти в res. словари (то же самое имя, но разные цвета в каждом файле словаря):

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

И тогда это мое определение DataGrid:

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

Не могли бы вы, ребята, помогите мне, как сделать передний план этого столбца меняется с изменением цветная тема? Любое решение оценено! Спасибо.

ответ

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'}"/> 
+0

Так простое и элегантное решение! Он отлично работает. Большое спасибо! –

+0

Рад, что это помогает :) Не забудьте отметить вопрос, как ответ, если все в порядке;) Счастливое кодирование! – Bruno

 Смежные вопросы

  • Нет связанных вопросов^_^