似乎不允许这样的事情。任何解决方法?
<Style x:Key=MyDerivedStyle TargetType="{x:Type Button}"
BasedOn="{DynamicResource GlobalButtonStyle}" />
<Style x:Key="GlobalLabelStyle" TargetType="{x:Type Button}">
我收到错误: 无法在“Style”类型的“BasedOn”属性上设置“DynamicResourceExtension”。 'DynamicResourceExtension'只能在DependencyObject的DependencyProperty上设置。
如果我将其更改为StaticResource,则该样式不会出现在我的控件中。
答案 0 :(得分:4)
这里有两个问题:
首先,您的全局样式需要出现在派生样式之前(在相同的资源部分中,或者在尝试定义派生样式之前合并到适当的ResourceDictionary中。
此外,您需要在按钮中明确定义样式:
<Button x:Name="btnOne"
Style="{StaticResource MyDerivedStyle}"
Content="Derived" />
请注意,在这种情况下,您不会创建动态资源(即需要重新加载的资源)。它是静态的,因为用于基于OnOn的Style需要。
答案 1 :(得分:2)
首先你需要放置基础风格,之后使用这种低音风格的风格:
<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>