我为WPF中的基本元素设置了一些默认样式,作为应用程序的默认样式,这使得按钮之类的控件都具有相似的外观,而无需在定义时手动调整,这也意味着它只需要改变一次。
我的资源字典的片段如下所示:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="Button">
<Setter Property="Margin" Value="4"/>
<Setter Property="MinWidth" Value="75"/>
<Setter Property="Padding" Value="10,2"/>
</Style>
</ResourceDictionary>
请注意,我将所有方面的保证金设为4。这很棒,因为它提供了按钮之间的间隙,而界面不需要明确定义它。我想知道如何只需一个按钮,就可以消除一侧的间隙,而不需要为另一侧定义“4”,以便让它与父母一侧对接。
我不想做以下事情,因为它偏离了风格(即如果我以我的风格改变4到5,我也需要在这里做):
<DockPanel>
<Button DockPanel.Dock="Left" Content="My Button" Margin="0,4,4,4" />
</DockPanel>
我只是想以某种方式设置MarginLeft
,并将其他人保留为我定义的默认样式。
注意:我确实有一个解决方法,就是简单地使用一个名为“buttonLeft”的样式,它在资源字典中定义,没有左边距。
答案 0 :(得分:1)
我认为您的解决方法很好:)如果您想要MarginLeft属性,您应该创建自己的按钮并添加此属性。
答案 1 :(得分:0)
意识到这一点已经得到解答,我决定在XamlPad中进行测试:
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
MinWidth="500" MinHeight="200">
<UserControl.Resources>
<Style TargetType="Button">
<Setter Property="Margin" Value="6"/>
<Setter Property="MinWidth" Value="75"/>
<Setter Property="Padding" Value="10,2"/>
</Style>
</UserControl.Resources>
<Grid>
<Grid.Margin>
<Thickness Top="20" />
</Grid.Margin>
<Button Content="Test" />
</Grid>
然而,这似乎是将20添加到6,给你26个作为上边距,6个在左边,右边和下边。
所以,如果我想要20,我必须把14。