Как стилизовать сетку WPF внутри <window>? - PullRequest
0 голосов
/ 22 января 2012

У меня есть приложение WPF с сеткой, которая загружается в окне.

Как мне сделать следующее (1) Добавить стиль градиента заголовка (вертикальные градиенты 2 цветов) (2) чередующийся стиль строки для этой сетки ниже? (3) Стиль строки наведения (выделение мыши над строкой) для каждого из рядов в сетке?

<Window
    x:Class="DiagramDesigner.PadDetailsWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:DiagramDesigner"
    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
    xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
    xmlns:s="clr-namespace:DiagramDesigner"
    xmlns:c="clr-namespace:DiagramDesigner.Controls"
    Title="Pad Details"
    WindowStyle="SingleBorderWindow"
    Width="750"
    Height="650" Loaded="Window_Loaded">

    <Window.Resources>




    </Window.Resources>
<ScrollViewer Name="DesignerScrollViewer" Background="Transparent" HorizontalScrollBarVisibility="Disabled"
  VerticalScrollBarVisibility="Auto">
        <Grid x:Name="LayoutRoot"  Margin="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="650" >
            <StackPanel Orientation="Vertical" Margin="0,0,-27,0">
                <!--<StackPanel>-->
                    <toolkit:DataGrid x:Name="dgMain" ItemsSource="{Binding}" VerticalScrollBarVisibility="Visible" AutoGenerateColumns="False" Width="650" RowHeight="20">
                        <toolkit:DataGrid.Columns>
                            <toolkit:DataGridTextColumn Header="Pad Name" Binding="{Binding Path=PadStream}" Width="80" />
                            <toolkit:DataGridTextColumn Header="Parent" Binding="{Binding Path=Parent}" Width="50"/>
                            <toolkit:DataGridTextColumn Header="Type" Binding="{Binding Path=Type}" Width="50"/>
                            <toolkit:DataGridTextColumn Header="Code" Binding="{Binding Path=Code}" Width="50"/>
                            <toolkit:DataGridTextColumn Header="Volume" Binding="{Binding Path=Volume}" Width="80"/>
                            <toolkit:DataGridTextColumn Header="Mass Rate" Binding="{Binding Path=MassRate}" Width="80"/>
                            <toolkit:DataGridTextColumn Header="Min Flow Rate" Binding="{Binding Path=MinFlowRate}" Width="80"/>
                            <toolkit:DataGridTextColumn Header="Max Flow Rate" Binding="{Binding Path=MaxFlowRate}" Width="*" />
                        </toolkit:DataGrid.Columns>
                    </toolkit:DataGrid>
                <!--</StackPanel>-->
                <StackPanel>
                    <Button x:Name="OKButton" Content="OK" Click="OnOkClick" Width="70" Height="23" HorizontalAlignment="Center"
                        Margin="0,3,0,0" Grid.Row="6" Grid.Column="3"/>
                </StackPanel>
            </StackPanel>

    </Grid>
</ScrollViewer>
</Window>

Пожалуйста, дайте мне знать, как можно было выполнить вышеописанный стиль для сетки..

1 Ответ

0 голосов
/ 22 января 2012

С здесь для стиля заголовка строки:

<Style x:Key="DataGridColumnHeaderStyle" TargetType="{x:Type Custom:DataGridColumnHeader}"  >
<Setter Property="Background" Value="#88800080" />
    <Setter Property="Foreground" Value="White" /> 
    <Style.Triggers>
    <Trigger Property="SortDirection" Value="{x:Null}">
        <Setter Property="Background" Value="{DynamicResource DataGridHeaderBackgroundBrush}" />
        <Setter Property="BorderBrush"  Value="Transparent" />
    </Trigger>
    <MultiTrigger>
        <MultiTrigger.Conditions>
            <Condition Property="IsMouseOver" Value="True" />
            <Condition Property="SortDirection" Value="{x:Null}" />
        </MultiTrigger.Conditions>
        <Setter Property="Background" Value="{StaticResource DataGridHeaderMouseOverBackgroundBrush}" />
        <Setter Property="BorderBrush" Value="{StaticResource DataGridHeaderBorderBrush}" />
    </MultiTrigger>

    <MultiTrigger>
        <MultiTrigger.Conditions>
            <Condition Property="IsMouseOver" Value="true" />
            <Condition Property="SortDirection" Value="{x:Null}" />
        </MultiTrigger.Conditions>
        <Setter Property="Background" Value="{StaticResource DataGridHeaderMouseOverBackgroundBrush}" />
        <Setter Property="BorderBrush" Value="{StaticResource DataGridHeaderBorderBrush}" />
    </MultiTrigger>
    <Trigger Property="SortDirection" Value="Ascending">
        <Setter Property="Background" Value="{StaticResource DataGridHeaderSortedBackgroundBrush}" />
    </Trigger>
    <Trigger Property="SortDirection" Value="Descending">
        <Setter Property="Background" Value="{StaticResource DataGridHeaderSortedBackgroundBrush}" />
    </Trigger>
</Style.Triggers>

С здесь для свойства наведения мыши:

    <DataGrid.RowStyle>
    <Style TargetType="DataGridRow">
         <Style.Triggers>
              <Trigger Property="IsMouseOver"
                       Value="True">
                   <Setter Property="Background"
                           Value="Green" />
              </Trigger>
         </Style.Triggers>
    </Style>
</DataGrid.RowStyle>
...