依赖属性调用后面的代码

时间:2014-04-22 13:35:07

标签: c# wpf dependency-properties

我创建了一个具有一些依赖属性的自定义UserControl 此自定义控件托管在窗口上 当我尝试从代码中的DependecyProperty获取值时,它不起作用。

public static readonly DependencyProperty ValueDp = DependencyProperty.Register("Value", typeof(string), typeof(MyCustomUserControl), new FrameworkPropertyMetadata(string.Empty, OutputHandler));

public string Value
{
   get { return (string)GetValue(ValueDp); }
   set { SetValue(ValueDp, value); }
}

private static void OutputHandler(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
   var temp= dependencyObject as MyCustomUserControl;
   if (temp!= null)
   {
      dependencyObject.SetValue(ValueDp,temp._conversionValue);
   }
}

在主机上我放了一个按钮,当我点击它时,我想读取存储在DP中的值,但我将始终获得在DP中设置的默认值。

我在这里做错了什么想法?

此致

2 个答案:

答案 0 :(得分:1)

我认为在OutputHandler方法中,您始终会丢弃分配给该属性的新值(dependencyPropertyChangedEventArgs.NewValue

答案 1 :(得分:0)

正如@Alberto所说,OldValueNewValue是保存DependencyProperty值的属性。以上属性位于dependencyPropertyChangedEventArgs。在Handler成员dependencyObjecttemp中引用相同的对象。