0

2 つのパネル (左パネル、右パネル) を含む 1 つの xaml ファイルを使用しています。これは、2 つのビューを意味します。また、各ビューに 2 つの ViewModel を使用しています。この状況に DataContext をバインドする方法は?

4

3 に答える 3

3

それぞれに独自の ViewModel が必要です。おそらく、複数の ViewModel を持つ View が既にあるでしょう。List にバインドする ItemControl はありますか? 私は通常そうします。

2 つのプロパティを持つ ViewModel を作成します。

public class ParentScreenViewModel : ViewModelBase
{

    public ViewModelBase LeftPanel 
    { 
        get {...}
        set {...}
    }

    public ViewModelBase RightPanel 
    { 
        get {...}
        set {...}
    }
}

次に、XAML はこれらにバインドします。

<Panel x:Name="LeftPanel" DataContext="{Binding LeftPanel}" />
<Panel x:Name="RightPanel" DataContext="{Binding RightPanel}" />

とにかく、それが私がすることです。

于 2012-11-02T15:45:03.360 に答える
0

ツリービュー内の任意の子要素の DataContext を変更できます。

そうでない場合は、両方のパネルをそれぞれの DataContext に設定します。これは、親コンテナー (ウィンドウやユーザー コントロールなど) のデータ コンテキストよりも優先されます。

于 2012-11-02T15:36:15.210 に答える
0

たとえば 2 つの StackPanel がある場合は、これを試してください。

<StackPanel x:Name="spFirst" />

<StackPanel x:Name="spSecond" />

コード ビハインドでは次のようになります。

FirstViewModel vm1 = new FirstViewModel();

SecondViewModel vm2 = new SecondViewModel();

spFirst.DataContext = vm1;

spSecond.DataContext = vm2;

ここに例があります (DoubleDataContextExample.zip)。

于 2012-11-02T15:36:44.870 に答える