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

В 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
11.03.2010, 13:45
    #36513957
Анонимус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPFtoolkit DataGrid. Не работют триггеры
или isSelected все-таки не true (не помню, если стиль выделения - одна ячейка, то он true или нет?)
или вы cell'ом перезакрашиваете row. Попробуйте для cell'а background сделать transpartment
...
Рейтинг: 0 / 0
11.03.2010, 16:57
    #36514652
Mz
Mz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPFtoolkit DataGrid. Не работют триггеры
Да, действительно, стиль Cell перезакрашивает стиль строки. Если сделать для Cell
Код: plaintext
1.
<Setter Property="Background" Value="Transparent"/>
то отрабатывает триггер по изменению фона строки, но при этом цвет текста все-равно не меняется.
Триггер по закрашиванию фона при выделении полностью отрабатывает, только если для ячейки не устанавливать свойство Foreground. Триггер же по закрашиванию фона строки через одну не отрабатывает не при каких условиях.
Как же все-таки добиться, чтобы и цвет букв ячеек был нужным, и триггеры отрабатывали полностью?
...
Рейтинг: 0 / 0
11.03.2010, 17:27
    #36514760
Mz
Mz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPFtoolkit DataGrid. Не работют триггеры
Задачу решил, переопределив стиль для 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
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPFtoolkit DataGrid. Не работют триггеры / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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