C# 基于动态资源的样式
这似乎是不允许的。有解决办法吗C# 基于动态资源的样式,c#,wpf,C#,Wpf,这似乎是不允许的。有解决办法吗 <Style x:Key=MyDerivedStyle TargetType="{x:Type Button}" BasedOn="{DynamicResource GlobalButtonStyle}" /> <Style x:Key="GlobalLabelStyle" TargetType="{x:Type Button}"> 我得到一个错误: 无法在类型为“Style”的“BasedO
<Style x:Key=MyDerivedStyle TargetType="{x:Type Button}"
BasedOn="{DynamicResource GlobalButtonStyle}" />
<Style x:Key="GlobalLabelStyle" TargetType="{x:Type Button}">
我得到一个错误:
无法在类型为“Style”的“BasedOn”属性上设置“DynamicResourceExtension”。只能对DependencyObject的DependencyProperty设置“DynamicResourceExtension”
如果将其更改为StaticResource,则该样式不会显示在控件中 这里有两个问题:
首先,您的全局样式需要出现在派生样式之前(在相同的参考资料部分中,或者在尝试定义派生样式之前合并到相应的ResourceDictionary中)
此外,还需要在按钮中明确定义样式:
<Button x:Name="btnOne"
Style="{StaticResource MyDerivedStyle}"
Content="Derived" />
请注意,在这种情况下,您不是在创建动态资源(即需要重新加载的资源)。它是静态的,因为用于BasedOn的样式需要是静态的。首先,您需要放置基于样式,然后是使用此Bass样式的样式:
<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>
为了进一步澄清,合并词典确实遵循“声明顺序”系统。如果尚未定义资源,则无法使用该资源。请将根样式置于使用该资源的样式之上。