我需要的是當我的視圖模型上的屬性被更新時,能夠在我的視圖類的代碼隱藏中執行代碼。我的理解是我需要使用依賴屬性。如何在更新屬性時調用代碼隱藏方法?
我的視圖模型確實實現了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);
}
當我把一個破發點上的setter用於p在我看來,即使在觀看模型中的值發生變化並且PropertyChanged
事件上升之後,它也不會被擊中。最終,我的目標是能夠在setter中添加更多代碼。
毛茸茸的細節,如果你好奇的話,是我需要根據這個值在多個StackPanel之間移動一個TextBlock。我似乎無法找到XAML唯一的方式。
更多的時候,這些問題很簡單,我已經錯過了一些很明顯的事情。儘管如此,我試圖幫助我排除這一個問題。
非常感謝!這正是我需要的。 – Jamie 2011-03-04 21:39:02