Что мне нужно, так это уметь выполнять код в выделенном коде для моего класса представления, когда свойство в моей модели представления обновляется. Насколько я понимаю, мне нужно использовать свойство зависимости.
Моя модель просмотра реализует INotifyPropertyChanged
.
Вот свойство в моей модели:
private DisplayPosition statusPosition;
public DisplayPosition StatusPosition
{
get { return this.statusPosition; }
set
{
this.statusPosition = value;
this.OnPropertyChanged("StatusPosition");
}
}
Вот мое свойство зависимости на мой взгляд:
public DisplayPosition StatusPosition
{
get { return (DisplayPosition)GetValue(StatusPositionProperty); }
set { SetValue(StatusPositionProperty, value); }
}
public static readonly DependencyProperty StatusPositionProperty =
DependencyProperty.Register(
"StatusPosition",
typeof(DisplayPosition),
typeof(TranscriptView),
new PropertyMetadata(DisplayPosition.BottomLeft));
Здесь я установил привязку в своем классе представления (обработчик для this.DataContextChanged
):
private void OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
Binding myBinding = new Binding("StatusPosition");
myBinding.Source = this.DataContext;
myBinding.NotifyOnTargetUpdated = true;
this.SetBinding(TranscriptView.StatusPositionProperty, myBinding);
}
Когда я устанавливаю точку останова на установщик для свойства в моем представлении, оно никогда не срабатывает даже после того, как я наблюдаю изменение значения в модели представления и возникает событие PropertyChanged
. В конечном счете, моя цель состоит в том, чтобы иметь возможность помещать больше кода в установщик.
Волшебная деталь, если вам интересно, это то, что мне нужно переместить TextBlock между несколькими StackPanels, основываясь на этом значении. Кажется, я не могу найти способ сделать это только на XAML.
Чаще всего эти проблемы представляют собой простые маленькие очевидные вещи, которые я пропустил. Ничто из того, что я пытаюсь, не помогает мне разобраться с этим.