My User Control di WPF contiene due pannelli dello stack e ognuno di essi contiene etichette, caselle di testo e pulsanti di opzione.
Desidero impostare la proprietà VerticalAlignment
su Center
per tutti i controlli nel mio UserControl con il minor numero possibile di codice.Impostazione della proprietà VerticalAlignment su tutti i controlli
ora ho seguenti soluzioni:
- forza bruta - mettere
VerticalAlignment="Center"
in ogni controllo - definire uno stile per
FrameworkElement
e applicarlo direttamente - definire gli stili per ogni tipo di controlli sul controllo utente (questo richiede 3 definizioni di stile, ma applica automaticamente lo stile al controllo)
Queste tre soluzioni richiedono troppo codice.
C'è qualche altro modo per scrivere questo?
Spero che definire lo stile per FrameworkElement
imposterà automaticamente la proprietà a tutti i controlli, ma non funziona.
Ecco frammento del mio XAML corrente (ho omesso la seconda, pannello pila molto simile):
<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>
Edit:
commento di Re Will: Odio davvero idea di scrivere di controllo formattazione codice codebehind . XAML dovrebbe essere sufficiente per questo controllo utente davvero semplice.
Commento di Re Muad'Dib: I controlli che utilizzo nel controllo utente derivano da FrameworkElement
, quindi questo non è un problema qui.
impostazione questo sarebbe attraverso il code-behind essere un'idea orribile come penso che sarebbe? –
non tutti i controlli ereditano da FrameworkElement –