我在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样式。
有人知道解决方案还是可以确认这是不可能的?
提前谢谢!答案 0 :(得分:2)
查看BasedOn样式属性。这将允许您从基本样式继承,使用基本属性并添加一些更改。
现在,BasedOn存在问题 - 它不能与隐式样式一起使用。但是,这很容易解决。本文演示了解决方法,并且还将更好地解释BasedOn属性: