明确样式覆盖的隐式xaml样式
问题描述:
在Silverlight4中有这个非常简单的xaml样式问题。明确样式覆盖的隐式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样式。
有人知道解决方案还是可以确认这是不可能的?
Thx提前!
答
查看BasedOn样式属性。这将允许您从基础样式继承,以使用基础属性并添加一些更改。
现在,BasedOn存在一个问题 - 它不能与隐式样式一起使用。但是,这很容易解决。本文围绕演示工作,也将解释支持算法FMP属性好一点:
嘿,THX因为我知道如何使用支持算法FMP但它不是非常有用在这种情况下,因为你可以在响应” t基于一个文本框的框架样式。在最终的代码texbox将包括一个自定义模板... – Kris 2011-03-04 09:15:00
我猜你不想基于FrameworkElement风格的TextBox风格? – grimus 2011-03-04 16:52:17
不,因为我想在某些情况下将样式添加到文本框。这可能不是很清楚,因为我简化了上面的例子,最后一个更复杂,需要正确的顺序。 – Kris 2011-03-04 18:59:05