powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPFtoolkit DataGrid. Не работют триггеры
4 сообщений из 4, страница 1 из 1
WPFtoolkit DataGrid. Не работют триггеры
    #36513210
Mz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mz
Гость
Здравствуйте.

В WPF приложении использую DataGrid. Задача: Сделать цвет сетки бледно голубой, шрифт синим, раскрасить фон строк через одну и изменить цвет выделения строки. Настраиваю стили:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit">

    <SolidColorBrush x:Key="RowBackgroundAlternationIndex2Brush" Color="Beige"  />
    <SolidColorBrush x:Key="RowBackgroundSelectedBrush" Color="Gray"  />
    <SolidColorBrush x:Key="RowForegroundSelectedBrush" Color="White"  />

    <Style TargetType="{x:Type dg:DataGridRow}" x:Key="DataGridDemoRowStyle" >
        <Style.Triggers>
            <Trigger Property="AlternationIndex" Value="2" >
                <Setter Property="Background" Value="{StaticResource RowBackgroundAlternationIndex2Brush}" />
            </Trigger>

            <Trigger Property="IsSelected" Value="true">
                <Setter Property="Background" Value="{StaticResource RowBackgroundSelectedBrush}" />
                <Setter Property="Foreground" Value="{StaticResource RowForegroundSelectedBrush}" />
            </Trigger>
        </Style.Triggers>
    </Style>

    <Style x:Key="DataGridCellStyle" TargetType="{x:Type dg:DataGridCell}">
        <Setter Property="BorderBrush" Value="LightBlue"/>
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="Foreground" Value="Blue"/>
    </Style>

    
    <Style x:Key="DataGridStyle"  TargetType="{x:Type dg:DataGrid}">
        <Setter Property="RowStyle" Value="{StaticResource DataGridDemoRowStyle}"/>
        <Setter Property="CellStyle" Value="{StaticResource DataGridCellStyle}"/>
        <Setter Property="HorizontalGridLinesBrush" Value="LightBlue"/>
        <Setter Property="VerticalGridLinesBrush" Value="LightBlue"/>
        <Setter Property="RowHeaderWidth" Value="12"/>
    </Style>
    
</ResourceDictionary>

И объявляю DataGrid:

Код: plaintext
1.
2.
3.
4.
5.
6.
<dg:DataGrid Name="DataGridWorkers" MinWidth ="600" Grid.Row=" 0" Grid.Column=" 0" Margin="5" CanUserAddRows="false" CanUserDeleteRows="False"  
                        AutoGenerateColumns="False" ItemsSource="{Binding}" Style="{DynamicResource DataGridStyle}" BorderBrush="LightBlue" 
                         ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.CanContentScroll="True"
                         SelectionUnit="FullRow" 
                         SelectionMode="Extended"        
                         GridLinesVisibility="All">

Все, что касается стиля ячейки, отрабатывает прекрасно - меняется цвет линий сетки, меняется цвет шрифта.
Но триггеры строк не отрабатывают совсем. В чем может быть дело?
...
Рейтинг: 0 / 0
WPFtoolkit DataGrid. Не работют триггеры
    #36513957
Анонимус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или isSelected все-таки не true (не помню, если стиль выделения - одна ячейка, то он true или нет?)
или вы cell'ом перезакрашиваете row. Попробуйте для cell'а background сделать transpartment
...
Рейтинг: 0 / 0
WPFtoolkit DataGrid. Не работют триггеры
    #36514652
Mz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mz
Гость
Да, действительно, стиль Cell перезакрашивает стиль строки. Если сделать для Cell
Код: plaintext
1.
<Setter Property="Background" Value="Transparent"/>
то отрабатывает триггер по изменению фона строки, но при этом цвет текста все-равно не меняется.
Триггер по закрашиванию фона при выделении полностью отрабатывает, только если для ячейки не устанавливать свойство Foreground. Триггер же по закрашиванию фона строки через одну не отрабатывает не при каких условиях.
Как же все-таки добиться, чтобы и цвет букв ячеек был нужным, и триггеры отрабатывали полностью?
...
Рейтинг: 0 / 0
WPFtoolkit DataGrid. Не работют триггеры
    #36514760
Mz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mz
Гость
Задачу решил, переопределив стиль для Cell, вынеся Foreground в свойства стиля для DataGrid и добавив стиль для DataGridColumnHeader. Привожу листинг полностью, может, кому-то будет полезным:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit">

    <SolidColorBrush x:Key="RowBackgroundAlternationIndex2Brush" Color="Beige"  />
    <SolidColorBrush x:Key="RowBackgroundSelectedBrush" Color="Gray"  />
    <SolidColorBrush x:Key="RowForegroundSelectedBrush" Color="White"  />

    <Style TargetType="{x:Type dg:DataGridRow}" x:Key="DataGridDemoRowStyle" >
        <Style.Triggers>
            <Trigger Property="AlternationIndex" Value="2" >
                <Setter Property="Background" Value="{StaticResource RowBackgroundAlternationIndex2Brush}" />
            </Trigger>

            <Trigger Property="IsSelected" Value="true">
                <Setter Property="Background" Value="{StaticResource RowBackgroundSelectedBrush}" />
                <Setter Property="Foreground" Value="{StaticResource RowForegroundSelectedBrush}" />
            </Trigger>
        </Style.Triggers>
    </Style>

    <Style x:Key="DataGridCellStyle" TargetType="{x:Type dg:DataGridCell}">
        <Setter Property="Background" Value="Transparent" />
        <Setter Property="BorderBrush" Value="Transparent" />
        <Setter Property="BorderThickness" Value="1" />
    </Style>

    <Style x:Key="DatagridColumnHeaderCustomTemplateStyle" 
           TargetType="{x:Type dg:DataGridColumnHeader}">
        <Setter Property="Foreground" Value="Black"/>
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
    </Style>

        <Style x:Key="DataGridStyle"  TargetType="{x:Type dg:DataGrid}">
        <Setter Property="AlternatingRowBackground" Value="{StaticResource RowBackgroundAlternationIndex2Brush}"/>
        <Setter Property="RowStyle" Value="{StaticResource DataGridDemoRowStyle}"/>
        <Setter Property="CellStyle" Value="{StaticResource DataGridCellStyle}"/>
        <Setter Property="ColumnHeaderStyle" Value="{StaticResource DatagridColumnHeaderCustomTemplateStyle}"/>    
        <Setter Property="HorizontalGridLinesBrush" Value="LightBlue"/>
        <Setter Property="VerticalGridLinesBrush" Value="LightBlue"/>
        <Setter Property="RowHeaderWidth" Value="12"/>
        <Setter Property="Foreground" Value="Blue"/>
    </Style>
    
</ResourceDictionary>

...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPFtoolkit DataGrid. Не работют триггеры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]