В текущем окне у меня есть сетка с несколькими элементами управления (метки, текстовые поля, кнопки). Общие стили установлены в App.xaml. Расширения для каждого элемента управления задаются в ресурсах Grid. Каждая видимость управления определяется значением свойства viewmodel. Не привязывать к ним видимость каждого элемента управления (он использует собственный конвертер, и это приведет к многократным дублированиям). Я хочу иметь стиль «MyVisible1».Как создать стиль для расширения, но не переопределить другие стили
Проблема в том, что если я применяю этот стиль, он перекрывает другие свойства. Какую ценность следует использовать в «BasedOn»? Или что еще я могу сделать для его реализации?
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type Control}" x:Key="MyVisible1">
<Setter Property="Visibility" Value="{Binding ...}" />
</Style>
<Style TargetType="Label" BasedOn="{StaticResource {x:Type Label}}">
<Setter Property="HorizontalAlignment" Value="Right" />
</Style>
<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Width" Value="80" />
<Setter Property="HorizontalAlignment" Value="Left" />
</Style>
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Width" Value="45" />
<Setter Property="HorizontalAlignment" Value="Right" />
</Style>
</Grid.Resources>
<TextBox Grid.Column="0" Grid.Row="0" Style="{StaticResource MyVisible1}"/>
</Grid>
У меня будет несколько стилей видимости. В этом случае ваше предложение не помогает. ( – Julia
Когда я впервые начал писать WPF, я всегда получал много дублированного кода в разных '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' что это часто невозможно. Затем я понял, что WPF довольно подробный язык по сравнению с другими, и что действительно не имеет значения, дублируем ли мы несколько байтов или даже килобайт кода. – Sheridan