我使用以下代码在资源字典中创建样式:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Chart="clr-namespace:TestApp.Controls.Chart">
<Style x:Key="DefaultLabelStyle" TargetType="{x:Type Chart:LabelStyle}">
<Setter Property="LabelBrush">
<Setter.Value>
<SolidColorBrush Color="Red"/>
</Setter.Value>
</Setter>
<Setter Property="LabelFontSize" Value="12.0"/>
<Setter Property="Visibility" Value="False"/>
<Setter Property="OrientationAngle" Value="0"/>
<Setter Property="LabelPlacement" Value="Top"/>
<Setter Property="LabelOrientation" Value="Normal"/>
</Style>
然后尝试使用以下代码使用它:
public static void LoadSkin()
{
var _skinDictionary = new ResourceDictionary { Source = new Uri("/Chart;component/Resources/DefaultSkin.xaml", UriKind.RelativeOrAbsolute) };
}
但它抛出“类型引用找不到类型”异常,提到无法找到LabelStyle。但LabelStyle是Chart中的公共类。
我在这里做错了什么?
我尝试在这里检查其他线程有类似的问题,并尝试进行这些更改,
仍然不起作用:(
请让我知道你的建议.. !!
答案 0 :(得分:1)
您不能将Style应用于不是从FrameworkElement或FrameworkContentElement派生的类型。请参阅Style.TargetType中的备注部分。
也许你的LabelStyle
类可以从这样的资源中获取其属性值:
<ResourceDictionary ...
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<sys:Double x:Key="LabelFontSize">12.0</sys:Double>
...
</ResourceDictionary>