我目前有一个带有自定义附加属性的UserControl,如下所示:
public static readonly DependencyProperty CurrentValueProperty =
DependencyProperty.RegisterAttached("Value", typeof(double), typeof(myControl), new PropertyMetadata(Convert.ToDouble(1)));
public double currentValue
{
get => (Double)GetValue(CurrentValueProperty);
set => SetValue(CurrentValueProperty, value);
}
在我看来,我以编程方式创建控件的新实例,如下所示:
myControl control = new myControl();
control.SetBinding(
myControl.CurrentValue,
new Binding("CurrentValue")
{
UpdateSourceTrigger=UpdateSourceTrigger.PropertyChanged
});
但是,当绑定值更改时(即,通过其他方式更新了ViewModel的属性),我注意到附加属性的setter不会触发。例如,如果我将设置器更改为以下设置,则MessageBox
不会触发:
set
{
SetValue(CurrentValue, value);
MessageBox.Show("Value Set");
}
但是,当我运行currentValue
的getter并将返回的值放入MessageBox时,我发现该值是正确的。
这是怎么回事?