Крепление рвется после первой загрузки.C#

Место общения программистов C#
Ответить
Anonymous
 Крепление рвется после первой загрузки.

Сообщение Anonymous »

У меня есть два разных класса, которые имеют FrameworkElement в качестве основы, они оба вызываются из DataTemplateSelector и имеют один и тот же базовый стиль.
Я ожидаю, что оба будут работать одинаково, но первый разрывает привязку после получения значений, а другой сохраняет привязку. Привязка общего стиля работает нормально.
Оба класса привязываются к соответствующей модели представления, имеющей 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("MySecond", 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*/
}
Они оба выглядят почти одинаково, но во втором привязка нарушена, в XAML каждая привязка явно имеет Mode=TwoWay.
Изменить:
Удален фрагмент кода, который объявлял MySecond при создании, и это позволило сделать 1 вызов для обновления источника.
Вопрос: «Почему одно, а не другое?» все еще там.

Подробнее здесь: https://stackoverflow.com/questions/798 ... first-load
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»