モデルにバインドしたいコントロールを含む 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");
}
}