DependencyPropert未使用DynamicResource作为参数从XAML设置

时间:2009-05-26 22:33:17

标签: c# properties wpf-controls dynamicresource

我正在尝试开发一个自定义的三态按钮用户控件,到目前为止,我一直在使用CTF来设置属性。
但我想将此更改为使用带有PropertiesDependencies的WPF属性系统。

不幸的是,我无法使其工作,当我使用DynamicResource从我的xaml(父亲)设置属性时,未设置该值。

<common:StateImageButton x:Name="story_buttonRecord"  BackTest="{DynamicResource backTest}" />

以下是我在按钮控制器中的代码:

public ImageSource BackTest
    {
        get { return (ImageSource)this.GetValue(BackProp); }
        set { this.SetValue(WidthProp,value); }
    }

    public static readonly DependencyProperty BackProp =
        DependencyProperty.Register(
            "BackTest",
            typeof(ImageSource),
            typeof(StateImageButton),
            new FrameworkPropertyMetadata());

我甚至没有在我的按钮xaml中使用该属性,但它显然甚至没有进入Setter。我一直在网上搜索没有成功。所以也许我错过了什么。

先谢谢你的帮助, 鲍里斯

1 个答案:

答案 0 :(得分:1)

此外,WPF不使用提供的setter来设置属性,而是直接执行。

WPF设置属性时调试的方法是在设置属性时添加回调,如下所示。

public static readonly DependencyProperty BackProp =
    DependencyProperty.Register(
        "BackTest",
        typeof(ImageSource),
        typeof(StateImageButton),
        new FrameworkPropertyMetadata(OnBackChanged));

private static void OnBackChanged(
    DependencyObject d, 
    DependencyPropertyChangedEventArgs e)
{
    var sender = (StateImageButton)d; // Put a breakpoint here
}