У меня есть следующий пользовательский элемент управления:
<abc:MyControl MyProperty="{Binding FieldInMyModel, Mode=TwoWay}">
И в моем пользовательском элементе управления есть
public static readonly DependencyProperty MyPropertyProperty =
DependencyProperty.Register("MyProperty", typeof(double), typeof(MyControl),
new PropertyMetadata(0.0, OnMyPropertyChanged));
public double MyProperty
{
get { return (double)GetValue(MyPropertyProperty ); }
set { SetValue(MyPropertyProperty , value); }
}
private static void OnMyPropertyChanged(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
if (d is MyControl mc)
{
// here I check if the new value is valid for my scope.
// if it is not I update it here to be valid
var v = (double)e.NewValue;
if (!mc.IsValidValue(v))
{
v = mc.MakeValidValue(v);
mc.MyProperty = v;
}
}
}
В моей модели я изменяю значение FieldInMyModel
на недействительное для моей сферы. OnMyPropertyChanged
вызывается, и после получения действительного значения из полученного недопустимого значения, я ожидаю, что FieldInMyModel
будет обновлено, чтобы получить новое значение MyProperty
, но на самом деле ничего не происходит. Есть мысли?