2016-11-12 14 views
0

我有MainWindow.xaml頁面與它的MainViewModel 並希望添加2個SidePanels使用一個UserControl,但它應該有不同的ViewModels。 MainViewModel alredy有2個屬性與創建SidePanelViewModels:分配不同的ViewModels到一個UserControl

public MainViewModel() 
{ 
    LeftSidePanel = new SidePanelViewModel(PanelSides.Left); 
    RightSidePanel = new SidePanelViewModel(PanelSides.Right); 
} 

如何設置這個屬性的DataContext在XAML每個用戶控件對象? 事情是這樣的不列入工作:

<Window DataContext="{Binding MainViewModel, Source={StaticResource Locator}}"> 
... 
    <Grid Visibility="{Binding RightSidePanel.PanelVisibility}" Grid.Column="4" Grid.Row="2" > 
     <v:SidePanelViev DataContext="{Binding RightSidePanel}" /> 

    </Grid> 
</Window> 

我打破了所有的大腦思考如何做到這一點,請幫助

PS。 或請提出任何其他的方法來達到同樣的目標..

+1

你的問題是什麼?你所展示的應該是有效的。 – dkozl

+0

但它沒有,當我試圖綁定用戶控件中的任何屬性時,用戶控件的屬性窗口顯示它沒有數據上下文 –

+1

瘋狂的猜測,但在'UserControl'構造函數中,您是否執行類似於'DataContext = this '? – dkozl

回答

1

我已經加入SidePanelViewModel的兩個實例作爲ContentControl中

<Window DataContext="{Binding MainViewModel, Source={StaticResource Locator}}"> 
... 
    <Grid Visibility="{Binding RightSidePanel.PanelVisibility}" Grid.Column="4" Grid.Row="2" > 
     <ContentControl Content="{Binding RightSidePanel}"></ContentControl> 

    </Grid> 
</Window> 

的含量,並增加新Window.Resource解決我的問題是什麼結合所有類的使用SidePanelViev

<Window.Resources> 
    <DataTemplate DataType="{x:Type vm:SidePanelViewModel}"> 
     <v:SidePanelViev></v:SidePanelViev> 
    </DataTemplate> 
</Window.Resources> 

這工作,但如果有人有更好的建議,請不要猶豫,後他們被可視化類型SidePanelViewModel,我不知道我的決定是一個好

相關問題