Я ожидаю, что оба будут работать одинаково, но первый разрывает привязку после получения значений, а другой сохраняет привязку. Привязка общего стиля работает нормально.
Оба класса привязываются к соответствующей модели представления, имеющей INotifyPropertyChanged.
Я уже пробовал выполнять проверку отладки, и тот, который работает, имеет свойство IsExpression = true, а другой — нет.
Мои элементы управления выглядят так:
Код: Выделить всё
public class MyControl1 : FrameworkElement
{
// This one is set by the default style and works fine on both
public static readonly DependencyProperty MyFirstProperty =
DependencyProperty.Register("MyFirst", typeof(byte), typeof(MyClass1), new PropertyMetadata(0));
public byte MyFirst
{
get { return (byte)GetValue(MyFirstProperty); }
set { return SetValue(MyFirstProperty, value); }
}
// This one breaks
public static readonly DependencyProperty MySecondProperty =
DependencyProperty.Register("MyFirst", typeof(Point), typeof(MyClass1), new PropertyMetadata(Point.Empty));
public byte MySecond
{
get { return (Point)GetValue(MySecondProperty); }
set { return SetValue(MySecondProperty, value); }
}
}
Код: Выделить всё
public class MyVM1 : INotifyPropertyChanged
{
private byte _myFirst;
public byte MyFirst
{
get => _myFirst;
set => _myFirst = value;
}
private Point _mySecond;
public Point MySecond
{
get => _mySecond;
set { _mySecond= value; OnPropertyChanged(); }
}
/*Implementation of propertychanged*/
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... first-load
Мобильная версия