Mein WPF-Benutzersteuerelement enthält zwei Stapelpanels, von denen jedes Beschriftungen, Textfelder und Optionsfelder enthält.
Ich möchte VerticalAlignment
Eigenschaft auf Center
auf alle Steuerelemente in meinem UserControl mit so wenig Code wie möglich festlegen.Festlegen der VerticalAlignment-Eigenschaft für alle Steuerelemente
Jetzt habe ich folgende Lösungen:
- Brute-Force - setzen
VerticalAlignment="Center"
in jedem Steuer - einen Stil für
FrameworkElement
definieren und wenden sie direkt - Stile definieren für jeden Typ der Steuerelemente auf Benutzerkontrolle (Dies erfordert 3 Stildefinitionen, wendet aber automatisch Stil auf das Steuerelement an.)
Diese drei Lösungen benötigen zu viel Code.
Gibt es eine andere Möglichkeit, dies zu schreiben?
Ich hoffte, dass die Definition von Stil für FrameworkElement
automatisch die Eigenschaft für alle Steuerelemente festlegen würde, aber es funktioniert nicht.
Hier Schnipsel meines aktuellen XAML (I weggelassen zweiten, sehr ähnlich Stapelplatte):
<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:
Re Wills Kommentar: Ich hasse Idee wirklich die Kontrolle über das Schreiben in Code-Behind-Formatierung Code . XAML sollte für diese wirklich einfache Benutzerkontrolle ausreichen.
Re Muad'Dibs Kommentar: Steuerelemente, die ich in meinem Benutzersteuerelement verwende, stammen von FrameworkElement
, also ist dies hier kein Problem.
würde diese Einstellung in der Code-Behind sein, wie eine scheußliche Idee, wie ich denke, würde es? –
nicht alle Steuerelemente erben von FrameworkElement –