さまざまな自己定義ビューを表示する WPF ウィンドウがあります。これまでのところ、MVVM について学んだことはすべて使用できました :)
ここで、新しい「問題」に直面しました。同じビューの 10 個のエンティティがより大きなビューに表示されています。これらの 10 個のビュー エンティティには一連のコントロール (テキスト ボックス、コンボ ボックスなど) が含まれていますが、すべて一貫しています。
では、これらのビューをビューモデルにバインドするにはどうすればよいでしょうか?
「上位レベル」の ViewModel に ViewModel の 10 個のインスタンスを配置し、ビューに VM のインスタンスをデータ コンテキストとして修正定義することを考えました。
私の質問は今です->多くの(同一の)ビューをビューモデルにバインドするより簡単な(またはより便利な)方法はありますか?
コード例:
モデルを見る:
private PanelViewModel _panelViewModel1 = new PanelViewModel();
public PanelViewModel PanelVM1
{
get { return _panelViewModel1; }
}
ビューの例:
<myControls:vwPanel HorizontalAlignment="Left" x:Name="vwPanel1"
VerticalAlignment="Top" DataContext="{Binding Path=PanelVM1}"/>
私が気になるのは、10 回のビューに対してこのロジックが 10 回必要になるということですか?
更新:
いくつかの質問に答えるために: 1 つのビューを 10 回表示したい (私の例では) UserControl から継承して独自のビューを定義しました。だから私のvwPanel
継承からUserControl
. 10 個の vwPanels は、Grid 内の StackPanel 内に配置されています。
あなたが指摘したように、データを表示することではありません。リストビューまたはデータグリッドが開始するのに適しています。これだけ多くの入力コントロールが必要な特殊なケースです:/
UPDATE2:私が望んでいたのは、ViewModel のリストを定義し、10 個のビューをこのリストの 1 つにバインドするようなものでした。しかし、これは機能しませんか?少なくとも、XAML からリスト内の 1 つの「特別な」エンティティを参照する方法がわかりません...