2

すべて、アプリケーション内のすべての のジェネリック スタイルを継承したいと考えてDataGrid/ResourceDataGridいます。これを行うために、私は という名前のリソース ファイルを作成しましたResourceControl.xaml

<UserControl x:Class="ResourceStudio.Views.ResourceControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:viewModels="clr-namespace:ResourceStudio.ViewModels" 
             xmlns:dataAccess="clr-namespace:ResourceStudio.DataAccess" 
             xmlns:controls="clr-namespace:ResourceStudio.Controls"
             mc:Ignorable="d">
   <UserControl.Resources>
      <ResourceDictionary>
         <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="MainWindowResources.xaml" />
         </ResourceDictionary.MergedDictionaries>
      </ResourceDictionary>
   </UserControl.Resources>
   <DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
      <TextBox DockPanel.Dock="Top" 
               Name="searchBox" 
               Margin="0,2" 
               VerticalContentAlignment="Center"
               mahAppsControls:TextboxHelper.Watermark="Search Resources" 
               mahAppsControls:TextboxHelper.ClearTextButton="True">
      </TextBox>
      <Grid DockPanel.Dock="Top">
         <controls:ResourceDataGrid x:Name="resourceDataGrid" 
                                    ItemsSource="{Binding Path=Resources}" 
                                    dataAccess:DataGridTextSearch.SearchValue="{Binding ElementName=searchBox, Path=Text, UpdateSourceTrigger=PropertyChanged}" 
                                    dataAccess:DataGridTextSearch.IsAnyTextMatch="False"
                                    HorizontalAlignment="Stretch" 
                                    VerticalAlignment="Stretch" 
                                    AutoGenerateColumns="False" 
                                    GridLinesVisibility="None"
                                    RowHeaderWidth="0" 
                                    CanUserAddRows="True" 
                                    CanUserDeleteRows="True">
            <controls:ResourceDataGrid.Columns>
               <DataGridTextColumn Header="KeyIndex" Binding="{Binding KeyIndex}" IsReadOnly="True"/>
               <DataGridTextColumn Header="FileName" Binding="{Binding FileName}" IsReadOnly="True"/>
               <DataGridTextColumn Header="ResourceName" Binding="{Binding ResourceName}" IsReadOnly="False"/>
               <controls:CollectionTextColumn Collection="ResourceStringList" Visibility="Collapsed"/>
            </controls:ResourceDataGrid.Columns>
            <controls:ResourceDataGrid.Resources>
               <dataAccess:SearchValueConverter x:Key="searchValueConverter"/>
               <Style TargetType="{x:Type DataGridCell}">
                  <Setter Property="dataAccess:DataGridTextSearch.IsTextMatch">
                     <Setter.Value>
                        <MultiBinding Converter="{StaticResource searchValueConverter}">
                           <Binding RelativeSource="{RelativeSource Self}" Path="Content.Text" />
                           <Binding RelativeSource="{RelativeSource Self}" Path="(dataAccess:DataGridTextSearch.SearchValue)" />
                           <Binding ElementName="resourceDataGrid" />
                        </MultiBinding>
                     </Setter.Value>
                  </Setter>
                  <Style.Triggers>
                     <Trigger Property="dataAccess:DataGridTextSearch.IsTextMatch" Value="True">
                        <Setter Property="Background" Value="Orange" />
                     </Trigger>
                  </Style.Triggers>
               </Style>
            </controls:ResourceDataGrid.Resources>
         </controls:ResourceDataGrid>
      </Grid>
   </DockPanel>
</UserControl>

MainWindowResources.xaml私が持っているリソースファイルの場所

<!--DataGrid Style-->
<Style TargetType="{x:Type DataGrid}">
   <Setter Property="Background" Value="White"/>
   <Style.Triggers>
      <Trigger Property="IsSelected" Value="True">
         <!--<Setter Property="Background" Value="{DynamicResource AccentColor}"/>-->
         <Setter Property="Background" Value="Red"/>
         <Setter Property="Foreground" Value="White"/>
      </Trigger>
   </Style.Triggers>
</Style>

<!--ResourceDataGrid Style-->
<Style TargetType="{x:Type controls:ResourceDataGrid}">
   <Setter Property="Background" Value="White"/>
   <Style.Triggers>
      <Trigger Property="IsSelected" Value="True">
         <!--<Setter Property="Background" Value="{DynamicResource AccentColor}"/>-->
         <Setter Property="Background" Value="Red"/>
         <Setter Property="Foreground" Value="White"/>
      </Trigger>
   </Style.Triggers>
</Style>

しかし、ResourceDataGridで定義されているスタイルを継承していないのはMainWindowResources.xamlなぜですか?

4

2 に答える 2