Как я могу переопределить только одно свойство controltemplate?

#xaml #listview #microsoft-metro #controltemplate

#xaml #listview #microsoft-metro #controltemplate

Вопрос:

Я пытаюсь переопределить свойство заполнения ListViewItemPresenter в приложениях магазина Windows. Все работает, когда я копирую полный общий стиль ListView, изменяю заполнение и применяю этот стиль как ItemContainerStyle к моему ListView.

Теперь мне нужно сделать это для другого ListView. Как я могу переопределить только одно свойство ControlTemplate ListViewItemPresenter, не копируя весь стиль заново?

Ответ №1:

Лучшее решение, которое я нашел, пришло по ссылке ниже. Я скопировал вставленный ответ ниже.

Идея состоит в том, чтобы скопировать полный стиль Windows 10 в свой словарь и присвоить ему ключ. Вам не нужно изменять стиль, и вам нужно скопировать его только один раз. (Хотя на один раз больше, чем в идеале, вам нужно.) Поскольку теперь у него есть ключ, вы можете создать другой стиль, «основанный» на этом ключе, и изменить его.

[ https://social.msdn.microsoft.com/Forums/en-US/d3c1f120-b11f-4d14-b45c-7bdf3e9233be/inheriting-a-default-application-style-xaml?forum=winappswithcsharp][1]

Сначала создайте стиль по умолчанию для элемента управления в вашем словаре ресурсов на уровне App.xaml, но присвойте ему x:Key

 <Style x:Key="ButtonDefaultStyle" TargetType="Button">
    ...
</Style>
  

Затем создайте другой стиль, который наследуется от этого стиля.

 <Style x:Key="MyButtonStyle" TargetType="Button" BasedOn="{StaticResource ButtonDefaultStyle}" />

</Style>
  

Стили по умолчанию можно найти здесь
[https://msdn.microsoft.com/en-us/library/windows/apps/mt299122.aspx ]
или на вашем компьютере в таком месте, как
C:Program Files (x86) Windows Kits 10 DesignTime CommonConfiguration Neutral UAP 10.0.10586.0Genericgeneric.xaml