我创建了一个具有一些依赖属性的自定义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中设置的默认值。
我在这里做错了什么想法?
此致
答案 0 :(得分:1)
我认为在OutputHandler
方法中,您始终会丢弃分配给该属性的新值(dependencyPropertyChangedEventArgs.NewValue
)
答案 1 :(得分:0)
正如@Alberto所说,OldValue
和NewValue
是保存DependencyProperty
值的属性。以上属性位于dependencyPropertyChangedEventArgs
。在Handler
成员dependencyObject
和temp
中引用相同的对象。