プロパティとそのオブジェクトのプロパティにバインドされているコントロールを持つオブジェクトがあるとしましょう。そのオブジェクトが変更されるとどうなりますか?
たとえば、ViewModel:
public class TheViewModel : INotifyPropertyChanged
{
private TheObjectClass theObject;
public TheObjectClass TheObject
{
get { return theObject; }
set { theObject = value;
OnPropertyChanged("TheObject"); }
}
}
オブジェクトのクラス:
public class TheObjectClass : INotifyPropertyChanged
{
private ThePropertyClass theProperty;
public ThePropertyClass TheProperty
{
get { return theProperty; }
set { theProperty= value;
OnPropertyChanged("TheProperty"); }
}
}
プロパティのクラス:
public class ThePropertyClass : INotifyPropertyChanged
{
private object objectToBindTo;
public object ObjectToBindTo
{
get { return objectToBindTo; }
set { objectToBindTo= value;
OnPropertyChanged("ObjectToBindTo"); }
}
}
次に、ウィンドウ(ViewModelがDataContextとして設定されている)に、次のようにこのオブジェクトにバインドするコントロールがあります。
<TextBlock Text={Binding TheObject.TheProperty.ObjectToBindTo}/>
次に、ViewModel.TheObjectをどこかでリセットします(バインドが行われた後)。
ViewModel.TheObject = new TheObjectClass();
私のテストでは(特にこのコードではなく、私のアプリケーションのコードの単純化された例です)、バインディングが存続することもあれば、機能しなくなることもあるようです。ここで何が起こると思いますか?親オブジェクトが別のオブジェクトにインスタンス化されると、プロパティバインディングが壊れることは論理的に思えますが、存続しているように見えることがあり、これは本当に混乱を招きます。