代码隐藏中的依赖项属性调用

本文关键字:属性 调用 依赖 隐藏 代码 | 更新日期: 2023-09-27 17:59:17

我已经创建了一个带有一些Dependency属性的自定义UserControl
此自定义控件位于窗口上
当我试图从代码背后的DependencyProperty中获取值时,它不起作用。

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中设置的默认值。

你知道我在这里做错了什么吗?

问候

代码隐藏中的依赖项属性调用

我认为在OutputHandler方法中,您总是丢弃分配给属性(dependencyPropertyChangedEventArgs.NewValue)的新值

正如@Alberto所说,OldValueNewValue是保持DependencyProperty值的属性。上述属性在dependencyPropertyChangedEventArgs中找到。在Handler中,成员dependencyObjecttemp引用同一对象。