【发布时间】:2011-07-09 03:05:46
【问题描述】:
当我的视图模型上的属性更新时,我需要能够在我的视图类的代码隐藏中执行代码。我的理解是我需要使用依赖属性。
我的视图模型确实实现了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 事件之后,它也不会被击中。最终,我的目标是能够在 setter 中放入更多代码。
如果你好奇的话,毛茸茸的细节是我需要根据这个值在多个 StackPanel 之间移动一个 TextBlock。我似乎无法找到一种仅限 XAML 的方法。
通常情况下,这些问题都是我错过的简单小事。不过,我所做的一切都无法帮助我解决这个问题。
【问题讨论】:
标签: c# wpf xaml binding dependency-properties