1 つのビューに 2 つのデータグリッドがありますが、これらのデータグリッドの ItemsSource であるコレクションは異なるビュー モデルにあります。これら 2 つのデータグリッドを 2 つの異なるビュー モデルのコレクションにバインドすることは可能ですか?
5212 次
3 に答える
10
両方を組み合わせたビューモデルを探してください:
public class ViewModelA {
public ObservableCollection<CustomClass> Items { get; set; }
/* properties, etc. */
}
public class ViewModelB {
/* properties, etc. */
}
public class CombiningViewModel {
public ViewModelA A { get; set; }
public ViewModelB B { get; set; }
}
バインディングは次のように行うことができます
<DataGrid ItemsSource="{Binding A.Items}">
<!-- Sample, not complete -->
</DataGrid>
于 2012-05-28T09:01:14.730 に答える
2
いいえ、直接ではありません。ただし、オプションがあります。
ビューの DataCONtext をそれ自体に設定し、個別のプロパティを介して各ビューモデルを公開し、それらのプロパティにバインドできます。
public class MyView : Window
{
public MyView()
{
this.DataContext = this;
}
public ViewModel1 FirstViewModel { get; set; }
public ViewModel2 SecondViewModel { get; set; }
}
または、ビューモデルの 1 つを拡張 (継承) するか、両方をラップして適切なプロパティを表示するラッパー ビューモデルを作成することもできます。
public class MyCompositeViewModel
{
public ViewModel1 FirstViewModel { get; set; }
public ViewModel2 SecondViewModel { get; set; }
}
于 2012-05-28T09:03:56.117 に答える
0
コンテナー ビューではなく、DataGrid ごとに DataContext を設定できます。
<Grid>
<DataGrid ... DataContext="..." />
<DataGrid ... DataContext="..." />
</Grid>
または、モデルに直接 DataContext と Bind を使用しないでください
<DataGrid ItemsSource="{Binding Source={StaticResource ...}}" />
于 2012-05-28T09:00:02.183 に答える