假设我有一个网格,在我的网格中我有许多控件.我希望创建一个样式来设置任何控件的边距,而不是为每个控件设置边距.这可能吗?
我希望以下内容有效:
<Window.Resources>
<Style x:Key="DefaultMargins">
<Setter Property="Control.Margin" Value="3, 3, 3, 3"/>
<Setter Property="Control.FontSize" Value="50"/>
</Style>
</Window.Resources>
<Grid Style="{StaticResource DefaultMargins}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="3*"/>
<RowDefinition Height="3*"/>
</Grid.RowDefinitions>
<Button Grid.Row="0" Grid.Column="0" Name="button1">Button</Button>
</Grid>
Run Code Online (Sandbox Code Playgroud)
但保证金被忽略,它不支持财产价值继承.是否有一个简单的替代方法将边距应用于网格的每个"子"?我知道在CSS中可以实现这种功能,我们的一些开发人员对使用这种结构感兴趣.
谢谢伊恩
您可以按类型指定样式,并将其限制在的范围内Grid:
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type Control}">
<Setter Property="Control.Margin" Value="3, 3, 3, 3"/>
<Setter Property="Control.FontSize" Value="50"/>
</Style>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="3*"/>
<RowDefinition Height="3*"/>
</Grid.RowDefinitions>
<Button Grid.Row="0" Grid.Column="0" Name="button1">Button</Button>
Run Code Online (Sandbox Code Playgroud)
小智 1
这似乎回答了与您类似的问题: Apply style to all TreeViewItem
如果这不起作用,那么我不太确定如何在 XAML 中完成它,但您可以在代码隐藏中添加样式:
Control element;
for (int i = 0; i < Grid1.Children.Count; i++)
{
element = (Control) Grid1.Children[i];
element.Style = (Style) FindResource("DefaultMargins");
}
Run Code Online (Sandbox Code Playgroud)
编辑:Grid1 指的是添加到 XAML 网格的 ax:Name="Grid1" 属性(我知道命名很差)。
| 归档时间: |
|
| 查看次数: |
12278 次 |
| 最近记录: |