Установите цвет фона элемента управления datagridcell в WPF?
В моем проекте у меня есть элемент управления datagridcell, который я хочу изменить его фоновое значение, когда клиент нажимает на него. стиль DataGridCell наследуется от словаря ресурсов.
Проблема в том, что фон совсем не меняется.
Сначала я подумал, что, возможно, мое триггерное событие неверно, но когда я устанавливаю фон непосредственно на элемент управления и удаляю стиль, фон остается прозрачным.
Вот декларация контроля:
<Grid Style="{DynamicResource GridBrushColorByTheme}"> <WrapPanel> <DataGridCell Content="1" Style="{DynamicResource cellStyle}"/> </WrapPanel> </Grid>
А вот и стиль (пожалуйста, посмотрите на "Click Style" в кнопке стиля):
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Style x:Key="cellStyle" TargetType="{x:Type DataGridCell}"> <Setter Property="Padding" Value="0" /> <Setter Property="Margin" Value="10,10,0,0" /> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="HorizontalAlignment" Value="Center"/> <Setter Property="VerticalAlignment" Value="Center"/> <Setter Property="Background" Value="Transparent" /> <Setter Property="TextBlock.TextAlignment" Value="Center"/> <Setter Property="FontSize" Value="20"/> <Setter Property="Width" Value="100"/> <Setter Property="Height" Value="36"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="DataGridCell"> <Border> <Border x:Name="border" BorderBrush="Transparent" BorderThickness="0" Padding="3" CornerRadius="0"> <ContentPresenter /> </Border> </Border> </ControlTemplate> </Setter.Value> </Setter> <Style.Triggers> <!--Steady Foreground--> <DataTrigger Binding="{Binding Source={StaticResource odpSettings},Path=Theme, Mode=OneWay}" Value="Dark"> <Setter Property="Foreground" Value="{DynamicResource DarkThemeForegroundColor(White)}"/> </DataTrigger> <DataTrigger Binding="{Binding Source={StaticResource odpSettings},Path=Theme, Mode=OneWay}" Value="Light"> <Setter Property="Foreground" Value="{DynamicResource LightThemeForegroundColor(Black)}"/> </DataTrigger> <!--Hover Style - Drak!--> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"/> <Condition Binding="{Binding Source={StaticResource odpSettings},Path=Theme, Mode=OneWay}" Value="Dark"/> </MultiDataTrigger.Conditions> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type DataGridCell}"> <Border BorderBrush="{DynamicResource LightThemeBgColor}" Background="{DynamicResource LightThemeBgColor}" CornerRadius="5"> <TextBlock Padding="3" Text="{TemplateBinding Content}" TextAlignment="Center"> <TextBlock.Triggers> <EventTrigger RoutedEvent="TextBlock.Loaded"> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetName="{x:Null}" Storyboard.TargetProperty="(TextBlock.Opacity)" From="1.0" To="0.0" Duration="0:0:0.7" AutoReverse="True" RepeatBehavior="Forever" /> </Storyboard> </BeginStoryboard> </EventTrigger> </TextBlock.Triggers> </TextBlock> </Border> </ControlTemplate> </Setter.Value> </Setter> <Setter Property="Foreground" Value="{DynamicResource LightThemeForegroundColor(Black)}"/> </MultiDataTrigger> Hover Style - Light! <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"/> <Condition Binding="{Binding Source={StaticResource odpSettings},Path=Theme, Mode=OneWay}" Value="Light"/> </MultiDataTrigger.Conditions> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type DataGridCell}"> <Border BorderBrush="{DynamicResource DarkThemeBgColor}" Background="{DynamicResource DarkThemeBgColor}" CornerRadius="5"> <TextBlock Padding="3" Text="{TemplateBinding Content}" TextAlignment="Center" > <TextBlock.Triggers> <EventTrigger RoutedEvent="TextBlock.Loaded"> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetName="{x:Null}" Storyboard.TargetProperty="(TextBlock.Opacity)" From="1.0" To="0.0" Duration="0:0:0.7" AutoReverse="True" RepeatBehavior="Forever" /> </Storyboard> </BeginStoryboard> </EventTrigger> </TextBlock.Triggers> </TextBlock> </Border> </ControlTemplate> </Setter.Value> </Setter> <Setter Property="Foreground" Value="{DynamicResource DarkThemeForegroundColor(White)}"/> </MultiDataTrigger> <!--Click Style!--> <Trigger Property="DataGridCell.IsSelected" Value="True"> <Setter Property="Background" Value="{DynamicResource OrangeThemeBgColor}"/> <Setter Property="BorderBrush" Value="{DynamicResource OrangeThemeBgColor}"/> </Trigger> </Style.Triggers> </Style> </ResourceDictionary>
Кто-нибудь может пожалуйста помочь мне? как я могу установить фон при нажатии на ячейку?
Спасибо, Орон!
Что я уже пробовал:
.......................................................................