#c# #wpf #xaml
#c# #wpf #xaml
Вопрос:
Я переопределяю стили по умолчанию для некоторых элементов управления в коде. После этого я хочу отключить все пользовательские стили для всех дочерних элементов (глубокая рекурсия) некоторого элемента управления. Например, xaml:
<StackPanel>
<StackPanel.Resources>
<Style TargetType="Button">
<Setter Property="Background" Value="Red"/>
</Style>
<Style TargetType="TextBlock">
<Setter Property="Background" Value="Red"/>
</Style>
</StackPanel.Resources>
<Button>red style here is ok</Button>
<TextBlock> also ok</TextBlock>
<StackPanel>
<StackPanel.Resources>
<!-- magic command to disable ALL custom styles, for all controls like
<Style TargetType = "FrameworkElement"/> -->
</StackPanel.Resources>
<Button> no style plz </Button>
<TextBlock> bad style-_- </TextBlock>
</StackPanel>
</StackPanel>
Я знаю, что могу использовать style=null, но это плохое решение для меня, потому что мне нужно применять этот трюк для каждого типа элементов управления. Как я могу решить свою проблему?
Комментарии:
1. Вам нужен стиль для небольшой группы элементов управления и нет стиля для большей группы, верно? Если это так, вы можете использовать именованные ресурсы для своих стилей
2. Я хочу создать большую группу элементов управления, и нет стиля для большой группы элементов управления, так что именованные стили не являются решением.
Ответ №1:
Вы можете ввести пустой стиль, который будет иметь приоритет над вашим другим стилем. Нравится:
<StackPanel>
<StackPanel.Resources>
<Style TargetType="Button">
<Setter Property="Background" Value="Red"/>
</Style>
<Style TargetType="TextBlock">
<Setter Property="Background" Value="Red"/>
</Style>
</StackPanel.Resources>
<Button>red style here is ok</Button>
<TextBlock> also ok</TextBlock>
<StackPanel>
<StackPanel.Resources>
<!-- magic command to disable ALL custom styles, for all controls -->
<Style TargetType="Button" />
<Style TargetType="TextBlock" />
</StackPanel.Resources>
<Button> no style plz </Button>
<TextBlock> bad style-_- </TextBlock>
</StackPanel>
</StackPanel>
Комментарии:
1. Для этого решения мне нужно знать, какие стили переопределены, и сбрасывать каждый стиль, это тоже плохо.