1

我正在尝试开发一个自定义的三态按钮用户控件,到目前为止我一直在使用 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。我在网上搜索了很多都没有成功。所以也许我错过了一些东西。

提前感谢您的帮助,鲍里斯

4

1 回答 1

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
}
于 2009-05-26T22:51:10.003 回答