WPFデータバインディングを学習しています。次のようなシナリオがあります。 これは(CurrentRecはVM1ののObservableCollection <>コレクションから、現在選択されているレコードである)これが正常に動作します私のForm1.xaml.csWPFで動作しないコントロールのXamlまたはCodebehindのいずれかのコントロールに2番目のデータバインド
ViewModel1 VM1;
ViewModel2 VM2;
Public Form1()
{
InitializeComponent();
VM1 = new ViewModel1();
VM2 = new ViewModel2;
this.DataContext=VM1;
}
Form1.Xaml です:
<TextBox x:Name="txtTest1" IsEnabled="{Binding CurrentRec.SearchFound}" Text="{Binding CurrentRec.Description1}"/>
これではありませんこの2番目のTextboxは、2番目のViewModelのプロパティ(VM2のObservableCollection <>コレクションから現在選択されているレコード)のVM2にバインドされています。
<TextBox x:Name="txtTest2" DataContext={Binding VM2} IsEnabled="{Binding CurrentRec.SearchFound}" Text="{Binding CurrentRec.Description2}"/>
私もこれを試してみました:
<TextBox x:Name="txtTest2" DataContext={Binding VM2.CurrentRec} IsEnabled="{Binding SearchFound}" Text="{Binding Description2}"/>
あまりにもfar.Plzヘルプので、私のために働いていないこと。
2つのこと:バウンドフィールドは、パブリックプロパティ、get/setアクセサーメソッド、およびバインディングは常に現在のDataContextからプルする必要があります。ですから、 'this.DataContext = this'と言うと、VM1とVM2の両方のプロパティにバインドできます。私は通常、DataContextを説明するために、WPFの初心者に[このSO答え](http://stackoverflow.com/a/7262322/302677)を送って、それを読むことをお勧めします:) – Rachel