2012-11-02 16 views

回答

0

您可以在樹視圖中的任何子元素上更改DataContext。

否則表示,將兩個面板都設置爲它們各自的DataContext - 它將優先於父容器(比如window或usercontrol)的datacontext。

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; 

Here你有例子(DoubleDataContextExample.zip)。

+0

我試過這個,但它不工作。我無法將視圖模型設置爲堆疊面板。 – Lakshmanan

+0

@Lakshmanan我爲你創建了一個例子,它在我的答案中處於底部。 – kmatyaszek

3

您需要各自擁有自己的ViewModel。您可能已經擁有包含多個ViewModel的視圖。你有一個綁定到List的ItemControl嗎?我通常這樣做。

我會創建一個具有兩個屬性的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}" /> 

無論如何,這是我會怎麼做。