我有两个绑定到同一dependencyProperty的对象(在Silverlight中)。 有没有办法确定这两个对象中的哪一个改变了属性? 我想根据这些信息采取不同的行动。
不幸的是,我无法附加两个不同的eventHandler(because it's a dependencyProperty)
public int StartTime
{
get { return (int)GetValue(StartTimeProperty); }
set { SetValue(StartTimeProperty, value); }
}
public static readonly DependencyProperty StartTimeProperty =
DependencyProperty.Register("StartTime", typeof(int), typeof(Step),
new PropertyMetadata(-1, new PropertyChangedCallback(OnStartTimeChanged)));
private static void OnStartTimeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((Step)d).OnStartTimeChanged(e);
}
protected virtual void OnStartTimeChanged(DependencyPropertyChangedEventArgs e)
{
//if set from obj1 -> do something
//if set from obj2 -> do something else
}
在这个例子中,我将从不同的对象设置StartTime属性,我想知道这些对象中的哪一个改变了属性。
由于
答案 0 :(得分:3)
你可以:
答案 1 :(得分:2)
我最终在控件上捕获了mouseDown事件,因此我知道用户界面更改了dependencyProperty的值。它不是最干净的解决方案,但它有效。
非常感谢您的所有建议。
答案 2 :(得分:-1)
var descriptor = DependencyPropertyDescriptor.FromProperty(YourType.StartTimeProperty , tpeof(YourType));
descriptor.AddValueChanged(obj1, OnStartTimeChanged1);
descriptor.AddValueChanged(obj2, OnStartTimeChanged2);