在.NET WPF中,我有以下XAML代码:
<StackPanel>
<StackPanel.Resources>
<Style TargetType="FrameworkElement">
<Setter Property="Margin" Value="5" />
</Style>
</StackPanel.Resources>
<CheckBox>Check 1</CheckBox>
<TextBox>Some text...</TextBox>
</StackPanel>
控件 没有应用任何边距。
是否可以将样式应用于多个控件(不同类型)而不使用键在每个控件上明确设置样式?
答案 0 :(得分:1)
样式不继承,您可以使用BasedOn
将子类的样式基于该样式。
在这种情况下,另一种方法应该是ItemsControl
使用ItemContainerStyle
设置为此样式。
this answer中有两种方法的例子。
答案 1 :(得分:1)
很抱歉,在我写完这篇文章之前,我误解了这个问题。 如果你想在StackPanel中设置多个复选框,我的答案很有用。
通过将整个应用程序放入app.xaml的合并词典中来隐式设置整个应用程序的样式。
<Style TargetType="CheckBox" BasedOn="{DynamicResource YourBaseStyle}"/>
这也适用于更小的范围。将范围简化为StackPanel只需要将相同的代码行添加到StackPanel.Resources
标记中。