首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

WPF,自定义的控件,动态引用资源为啥不见效

2013-12-11 
WPF,自定义的控件,动态引用资源为什么不见效一个自定义的控件CustomControl1:ResourceDictionaryxmlnsh

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的相关内容
[解决办法]
将模版与样式分开写!
[解决办法]
引用:
Quote: 引用:

将模版与样式分开写!

与这一个控件相关的,我都是写在一堆的。东放点,西放点,更不好。
我就是不明白为什么,动态引用不行呢?静态引用为什么又可以呢?

请确认动态引用完成后,有没有相应的处理,即通知相关属性已经发生变化

热点排行