Мой WPF UserControl содержит две панели стека, и каждая из них содержит метки, текстовые поля и переключатели.
Я хотел бы установить для свойства VerticalAlignment
значение Center
для всех элементов управления в моем UserControl, используя всего лишь небольшой кодвозможный.
Теперь у меня есть следующие решения:
- грубая сила - поместите
VerticalAlignment="Center"
в каждый элемент управления - определите один стиль для
FrameworkElement
и примените его непосредственно - определяет стили для каждого типа элементов управления пользовательского элемента управления (для этого требуется 3 определения стиля, но автоматически применяется стиль к элементу управления)
Этим трем решениям требуется слишком много кода.
Есть ли другой способ написать это?
Я надеялся, что определение стиля для FrameworkElement
автоматически установит свойство для всех элементов управления, но это не работает.
Вот фрагмент моего текущего XAML (яопущена вторая, очень похожая панель стека):
<UserControl.Resources>
<Style x:Key="BaseStyle" TargetType="FrameworkElement">
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</UserControl.Resources>
<Grid>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource BaseStyle}" Text="Value:" />
<RadioButton Style="{StaticResource BaseStyle}">Standard</RadioButton>
<RadioButton Style="{StaticResource BaseStyle}">Other</RadioButton>
<TextBox Style="{StaticResource BaseStyle}" Width="40"/>
</StackPanel>
</Grid>
Редактировать:
Re Комментарий Уилла: Я действительно ненавижу идею написания кода форматирования элемента управления в коде позади.XAML должно быть достаточно для этого действительно простого пользовательского контроля.
Комментарий Re Muad'Dib: Элементы управления, которые я использую в своем пользовательском элементе управления, получены из FrameworkElement
, так что здесь это не проблема.