Wpf 如何仅绑定到路径的底部?
假设我有这个绑定:Wpf 如何仅绑定到路径的底部?,wpf,data-binding,Wpf,Data Binding,假设我有这个绑定: <TextBlock Text="{Binding MyBaseProperty.MySubProperty}" /> 是否可以告诉WPF侦听对MyBaseProperty的更改?每当MyBaseProperty更改为MyBaseProperty的(重新)查询MySubProperty 这个问题背后的背景是:我有一个视图模型,它包含一个属性(MyBaseProperty),指向一个类的实例,该类没有实现INotifyPropertyChanged接口。但是
<TextBlock Text="{Binding MyBaseProperty.MySubProperty}" />
是否可以告诉WPF侦听对MyBaseProperty的更改?每当MyBaseProperty
更改为MyBaseProperty
的(重新)查询MySubProperty
这个问题背后的背景是:我有一个视图模型,它包含一个属性(MyBaseProperty
),指向一个类的实例,该类没有实现INotifyPropertyChanged
接口。但是,此TextBlock
的DataContext
实现了INotifyPropertyChanged
接口,因此可以通知视图对MyBaseProperty的更改
如果您发现通过路径绑定实现这种基础,我可以绕过ValueConverters,并使用INotifyPropertyChanged
为MySubProperty
支持的属性包装来扩展我的ViewModel,这可能会为您解决问题
您可以侦听MyBaseProperty更改事件,以及该事件发生的时间
您可以像这样强制绑定更新--
最后,我在视图模型中为MySubProperty
创建了一个包装器。此包装器的定义如下:
public string MySubProperty
{
get
{
return MyBaseProperty.MySubProperty;
}
set
{
MyBaseProperty.MySubProperty = value;
FirePropertyChangedEvent("MySubProperty");
}
}
我进一步添加了对FirePropertyChangedEvent(“MySubProperty”)的调用代码>到MyBaseProperty
设置器:
private MyBasePropertyType _myBaseProperty;
public MyBasePropertyType MyBaseProperty
{
get
{
return _myBaseProperty;
}
set
{
_myBaseProperty = value;
FirePropertyChangedEvent("MyBaseProperty");
FirePropertyChangedEvent("MySubProperty"); // also inform about changes to MySubProperty
}
}
最后,我将视图更改为使用视图模型的MySubProperty
包装器:
<TextBlock Text="{Binding MySubProperty}" />
谢谢您的回复。这真的感觉不干净,因为它需要我污染视图的代码隐藏。不是我想要的。。。
<TextBlock Text="{Binding MySubProperty}" />