我想将Padding="0"
应用于左侧边栏(第一个Label
)中的每个StackPanel
,以便左对齐每个TextBox
(以及其他控件)
如何在<ApplicationResources>
中定义隐式样式,该样式仅适用于特定容器中的元素?
备选方案:
x:Key="sidebarLabel"
。但是,对于我实际应用程序侧栏中的许多标签,此选项似乎是多余的。Padding=0
添加到侧栏中的每个Label
。这基本上与之前的替代方案相同。<StackPanel.Resources>
。但是,我希望将样式(在App.xaml
中)与XAML分开(在MainWindow.xaml
中)。
<Application.Resources>
<Style TargetType="{x:Type Label}">
<Setter Property="Padding" Value="0" />
</Style>
</Application.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<GroupBox Header="New User">
<StackPanel>
<Label>First Name:</Label>
<TextBox/>
<Label>Last Name:</Label>
<TextBox/>
</StackPanel>
</GroupBox>
</StackPanel>
<GroupBox Grid.Column="1" Header="Main">
<StackPanel>
<Label>I want default padding here</Label>
</StackPanel>
</GroupBox>
</Grid>
答案 0 :(得分:4)
您可以在app.xaml中使用Style.Resources
,如下所示:
<Application.Resources>
<Style TargetType="StackPanel">
<Style.Resources>
<Style TargetType="Label">
<Setter Property="Padding" Value="0" />
</Style>
</Style.Resources>
</Style>
</Application.Resources>
这会设置Label.Style
内使用的所有StackPanel
。如果您只想对特定StackPanels
中的标签提供此行为,则可以使用x:Key
这样的内容:
<Application.Resources>
<Style TargetType="StackPanel" x:Key="LabelStyledPanel">
<Style.Resources>
<Style TargetType="Label">
<Setter Property="Padding" Value="0" />
</Style>
</Style.Resources>
</Style>
</Application.Resources>
然后使用StackPanels
的所有StaticResource LabelStyledPanel
都使用标签样式。