Установка свойства TargetType стиля к базовому классу

Попробуйте перейти к настройкам разработчика на телефоне, прокрутить до «Мониторинг», затем «Включить отслеживание OpenGL» и выбрать LogCat.

43
задан akjoshi 15 March 2012 в 06:52
поделиться

2 ответа

К сожалению, вы не можете применять стили к базовому типу FrameworkElement; хотя WPF позволит вам написать стиль, он не будет применять его к элементам управления, являющимся производными от него. Похоже, что это также относится к подтипам FrameworkElement, например, ButtonBase, супертипу Button / ToggleButton / RepeatButton.

Вы все еще можете использовать наследование, но вам придется использовать явный синтаксис BasedOn для применения его к типам элементов управления, к которым вы хотите его применить.

<Window.Resources>
    <Style TargetType="{x:Type FrameworkElement}">
        <Setter Property="Margin" Value="10" />
    </Style>

    <Style TargetType="{x:Type Label}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
    <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />

</Window.Resources>

59
ответ дан 26 November 2019 в 23:00
поделиться

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

7
ответ дан 26 November 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: