WPF,自定义的控件,动态引用资源为什么不见效
一个自定义的控件CustomControl1:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPF3">
<Style x:Key="aa" TargetType="Border">
<Setter Property="Background" Value="Red"/>
</Style>
<Style TargetType="{x:Type local:CustomControl1}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl1}">
<Border Style="{DynamicResource aa}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
public class CustomControl1 : Control
{
static CustomControl1()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadata(typeof(CustomControl1)));
}
}
在CustomControl1的样式中,Border元素引用了一个Style资源"aa",引用方式为动态引用。但结果并不见效,改为静态引用(StaticResource)之后,才能见到效果。
请问,这是什么原因呢?难道动态引用还没有静态引用凑效吗?
[解决办法]
没有这么用过,建议你google一下“依赖属性”
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadata(typeof(CustomControl1)));不清楚你这句话是不是修改了默认的样式,或者需要处理相应的ProperyChange的相关内容
[解决办法]
将模版与样式分开写!
[解决办法]
请确认动态引用完成后,有没有相应的处理,即通知相关属性已经发生变化