由显式样式覆盖的隐式xaml样式

时间:2011-03-03 19:13:46

标签: silverlight xaml silverlight-4.0

我在Silverlight4中有这个非常简单的xaml样式问题。

当我通过显式样式在元素上设置样式时,我的隐式样式被删除了吗? 我创建了一个简单的例子来说明问题。

<UserControl.Resources>
    <Style TargetType="TextBox">
        <Setter Property="Background" Value="red"/>
    </Style>

    <Style TargetType="FrameworkElement" x:Key="test">
        <Setter Property="Margin" Value="20"/>
    </Style>

</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="White">
    <TextBox Style="{StaticResource test}" Height="40" Width="120"> </TextBox>
</Grid>
</UserControl>

所以当我删除Style="{StaticResource test}时 隐式样式再次应用。

注意:这是一个过于简单的例子。因此,将边距移动到texbox样式不是一种选择,因为真实项目包含更大的xaml样式。

有人知道解决方案还是可以确认这是不可能的?

提前谢谢!

1 个答案:

答案 0 :(得分:2)

查看BasedOn样式属性。这将允许您从基本样式继承,使用基本属性并添加一些更改。

现在,BasedOn存在问题 - 它不能与隐式样式一起使用。但是,这很容易解决。本文演示了解决方法,并且还将更好地解释BasedOn属性:

Silverlight how-to: Inherit from an Implicit Style