Подтвердить что ты не робот

Как создать стиль, основанный на стандарте DataGrid по умолчанию?

У меня есть настраиваемый элемент управления, который расширяет DataGrid. Он называется ExtendedDataGrid. Я хочу, чтобы стиль ExtendedDataGrid был таким же, как стиль DataGrid, кроме того, что он меняет шаблон. Я пробовал что-то вроде этого:

<Style TargetType="{x:Type MyControls:ExtendedDataGrid}" BasedOn="{StaticResource {x:Type DataGrid}}">
    <Setter Property="Template">
    ...
    </Setter>
</Style>

Но он говорит, что ресурс не найден.

Итак, я пытаюсь:

<Style TargetType="{x:Type MyControls:ExtendedDataGrid}" BasedOn="{StaticResource {ComponentResourceKey ResourceId=DataGridStyle, TypeInTargetAssembly={x:Type DataGrid}}}">
    <Setter Property="Template">
    ...
    </Setter>
</Style>

Но он также не работает... Итак, что мне делать?

4b9b3361

Ответ 1

Ну тайна решена:)

Мой первый код выше действительно работает:

<Style TargetType="{x:Type MyControls:ExtendedDataGrid}" BasedOn="{StaticResource {x:Type DataGrid}}">
    <Setter Property="Template">
    ...
    </Setter>
</Style>

Я думал, что это не работает, потому что VS (или Resharper) показал ошибку в моем коде, говоря, что ресурс не найден... Ошибка в VS (или Resharper): (

Ответ 2

Если вы создаете стиль с помощью Свойство TargetType и основывать его на другой стиль, который также определяет Свойство TargetType, целевой тип производного стиля должны быть одинаковыми как или быть производным от типа базовый стиль.

Ваша сетка наследует от DataGrid, правильно?