我有一个 WPF 窗口,其中包含我希望绑定到我的模型的控件。该模型实现 INotifyPropertyChanged 以在 Properties 更改值时通知视图。属性是由字段支持的原语,例如:
private bool m_isRunning;
public bool IsRunning
{
get { return m_isRunning; }
private set
{
m_isRunning= value;
OnPropertyChanged("IsRunning");
}
}
protected virtual void OnPropertyChanged(string propertyName)
{
if (String.IsNullOrEmpty(propertyName))
{
return;
}
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
这适用于原始值。我还有一个具有各种原始属性和哈希表的复合对象。或者,我想绑定到 ObservableCollection 的 Count 属性。我想将我的视图控件绑定到复合对象中的属性,但我认为这是不可能的。就像是:
<Run Text="{Binding Path=CompositeObject.SomeInnerProperty, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" />
这似乎不可能,但是还有其他方法吗?我觉得我唯一的选择是公开映射到复合对象内部属性的属性,但这似乎有很多重复,例如:
public bool SomeInnerProperty
{
get { return m_myComposite.SomeInnerProperty; }
private set
{
m_myComposite.SomeInnerProperty= value;
OnPropertyChanged("SomeInnerProperty");
}
}