Назначение стилевых ресурсов в DataGrid

Извиняюсь за возможно смутную природу этого вопроса, но я довольно новичок в WPF и, следовательно, борюсь с проблемой ресурсов.

Моя проблема в том, что у меня есть DataGrid что я хочу назначить стиль, который описывает свойства, такие как FontSize а также Background/Foreground цвета (когда курсор мыши находится над строками). Я могу сделать это успешно следующим образом:

<Window x:Class="WpfApplication11.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">

    <Grid>
        <DataGrid Name="DataGrid1" ItemsSource="{Binding Path=Fibers}">
            <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                    <Setter Property="FontSize" Value="12"/>
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="Blue"/>
                            <Setter Property="Foreground" Value="White"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.RowStyle>

            <DataGrid.Columns>
                <DataGridTextColumn Header="FiberNo" />
                <DataGridTextColumn Header="Fiber" />
                <DataGridTextColumn Header="Connection" />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

Но я знаю / надеюсь, что должен быть способ определить это RowStyle в качестве отдельного ресурса, а затем обратиться к этому ресурсу (через имя) из DataGrid само определение. Поэтому я попытался создать Window.Resources тег и тег внутри DataGrid это относится к этому.

Пожалуйста, смотрите ниже:

<Window x:Class="WpfApplication11.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">

    <Window.Resources>
        <DataGrid x:Key="MyDataGridStyle">
            <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                    <Setter Property="FontSize" Value="12"/>
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="Blue"/>
                            <Setter Property="Foreground" Value="White"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.RowStyle>
        </DataGrid>
    </Window.Resources>

    <Grid>
        <DataGrid Name="DataGrid1" ItemsSource="{Binding Path=Fibers}">
            <StaticResource ResourceKey="MyDataGridStyle"/>

            <DataGrid.Columns>
                <DataGridTextColumn Header="FiberNo" />
                <DataGridTextColumn Header="Fiber" />
                <DataGridTextColumn Header="Connection" />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

Излишне говорить, что это не работает. Он не падает, но я не вижу никаких строк. Код, который я предоставил здесь, является уменьшенной версией того, что я написал для своего приложения, но основные принципы те же.

С уважением, Дэвид.

1 ответ

Решение

РЕДАКТИРОВАТЬ: не посмотрел внимательно на ваш код...:) так что для полноты

<Window.Resources>
            <Style x:Key="MyDataGridStyle" TargetType="DataGridRow">
                <Setter Property="FontSize" Value="12"/>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" Value="Blue"/>
                        <Setter Property="Foreground" Value="White"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
</Window.Resources>

<DataGrid Name="DataGrid1"
          ItemsSource="{Binding Path=Fibers}" 
          RowStyle="{StaticResource MyDataGridStyle}" ...>
Другие вопросы по тегам