WPF:添加到保证金而不覆盖现有价值

时间:2012-05-18 17:39:07

标签: wpf xaml margin

我定义了两个简单的边距样式,一个基于另一个。

<Style x:Key="marginStyle" TargetType="FrameworkElement">
    <Setter Property="Margin" Value="0,10,20,10"/>
</Style>

<!-- based on marginStyle -->
<Style x:Key="marginIndentStyle" TargetType="FrameworkElement" BasedOn="{StaticResource marginStyle}">
    <Setter Property="Margin" Value="10,0,0,0"/>
</Style>

在派生的'marginIndentStyle'样式中,我想将边距的左侧道具调整为基础'marginStyle'样式中的左道具10,比当前设置的多10倍。使用上面的代码会完全覆盖这些值。我只想添加它,以便派生'marginIndentStyle'样式的结果边距是“10,10,20,10”。

注意,我不想严格将其值设置为10,10,20,10 b / c我希望'marginStyle'样式中的任何更改都反映在派生的'marginIndentStyle'样式中。

这可能吗?

1 个答案:

答案 0 :(得分:1)

AFAIK,如果没有相当数量的代码,这是不可能的。

更简单的方法是使用两个样式,静态边距应用于两个不同的面板\装饰器。

类似的东西:

<Border Style="{StaticResource marginIndentStyle}">
    <Border Style="{StaticResource marginStyle}">
         .....
    </Border>
</Border>

这实际上会增加利润。因此,第二个边界中的边距将具有第一个边距和第二个边距的组合。