2010-09-22 66 views
3

看起来像这样的是不允许的。任何解决方法?基于动态资源的风格

<Style x:Key=MyDerivedStyle TargetType="{x:Type Button}" 
     BasedOn="{DynamicResource GlobalButtonStyle}" />  

    <Style x:Key="GlobalLabelStyle" TargetType="{x:Type Button}"> 

我得到的错误: A“DynamicResourceExtension”不能在类型“风格”的“支持算法FMP”属性设置。 'DynamicResourceExtension'只能在DependencyObject的DependencyProperty上设置。

如果我将其更改为StaticResource,则样式不会显示在我的控件中。

回答

3

两个问题在这里:

首先,你的全局样式需要你的派生样式之前出现(在相同的资源部分,或者尝试定义派生的风格之前,在适当的ResourceDictionary合并

此外,您需要在您的按钮明确定义的风格:

<Button x:Name="btnOne" 
     Style="{StaticResource MyDerivedStyle}" 
     Content="Derived" /> 

注意,在这种情况下,你是不是创建一个动态资源(即一个需要重新加载)它是静态的,作为正在使用的风格为BasedOn需要。

1

首先,你需要放置风格为主,之后,使用该低音风格样式:

<Style x:Key="ComboBoxItemStyleSpecial" 
     BasedOn="{StaticResource ComboBoxItemStyleDefault}" 
     TargetType="{x:Type ComboBoxItem}"> 
    <Setter Property="BorderBrush" 
      Value="Lime" /> 
    <Setter Property="BorderThickness" 
      Value="3" /> 
</Style> 
<Style x:Key="ComboBoxItemStyleSpecialFont" 
     BasedOn="{StaticResource ComboBoxItemStyleSpecial}" 
     TargetType="{x:Type ComboBoxItem}"> 
    <Setter Property="FontSize" 
      Value="40" /> 
    <Setter Property="FontFamily" 
      Value="Aharoni" /> 
</Style>