Как сделать так, чтобы элементы пользовательского управления WPF наследовали родительский стиль, а затем добавляли пользовательские стили?

#wpf #xaml

#wpf #xaml

Вопрос:

В моем ResourceDictionary.xaml у меня есть:

 <ResourceDictionary xmlns="...">
<Style TargetType="{x:Type DataGridCell}">
    <Setter Property="Background" Value="Red" />
</Style>
 

В моем Main.xaml у меня есть:

 <DataGrid ...>
...
<DataGrid.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="../ResourceDictionary.xaml" />
        </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
</DataGrid.Resources>
...
</DataGrid>
 

а также:

 <DataGrid ...>
...
<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <local:Results />
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>
...
</DataGrid>
 

Наконец, внутри Results.xaml у меня есть:

 <DataGrid.Resources>
    <Style BasedOn="{StaticResource {x:Type DataGridCell}}" TargetType="{x:Type DataGridCell}">
       <Setter Property="HorizontalAlignment" Value="Right" />
    </Style>
</DataGrid.Resources>
 

На данный момент я ожидаю, что все ячейки таблицы данных в Results.xaml будут содержать оба Background = Red и HorizontalAlignment = Right .

Из того, что я нашел в Интернете, эта строка означает наследовать существующие стили DateGridCell ( BasedOn ) и добавить в него новый стиль ( Setter ), но результат только HorizontalAlignment = Right применяется

Если я удалю <style> его, то фон станет красным.

На данный момент я не знаю, что пошло не так.

Комментарии:

1. Какова предыстория <local:Results /> ?