直接设置DependencyProperty的值

时间:2017-05-17 14:49:58

标签: c# wpf dependency-properties

好的,我有一个源自Panel的测试控件。我为它添加了新的依赖属性。

public class TestPanel : Panel
{
    public static DependencyProperty TestProperty = DependencyProperty.Register(
        "Test",
        typeof(double),
        typeof(TestPanel),
        new FrameworkPropertyMetadata(
            0.0,
            null));

    public double Test
    {
        get
        {
            return (double)this.GetValue(TestProperty);

        }
        set
        {
            this.SetValue(TestProperty, value);
        }
    }
}

然后我在xaml <controls:TestPanel Test="50" />

中定义了它

但现在我想知道,为什么没有调用测试的设定者?它不应该通过值(50)吗?我在安排通过期间得到默认值(0.0)。

或者仅使用绑定有效吗?

1 个答案:

答案 0 :(得分:1)

XAML处理器使用SetValue方法设置依赖项属性的值:

Setters not run on Dependency Properties?

如果要在将属性设置为新值时执行某些操作,则应注册回调:

public static DependencyProperty TestProperty = DependencyProperty.Register(
"Test",
typeof(double),
typeof(TestPanel),
new FrameworkPropertyMetadata(
   0.0,
   OnPropertyChanged));

private static object OnPropertyChanged(DependencyObject d, object baseValue)
{
    //...
}