2010-12-16 49 views
2

如果我現在有一個MainView,並且在MainView中我有一個堆棧面板。現在我想要的是基於菜單項點擊插入不同的視圖。如何使用MVVM Light實現這一點?在MVVM Light中爲WPF佈線視圖

如果有人可以發佈帶有代碼或視頻的項目示例的鏈接,那將會很棒!

回答

3

我不知道MVVM輕,但我做這樣的事情,如果沒有這個燈的框架如下:

<!-- Content area that contains user controls for all wizard steps --> 
    <Grid Margin="0,3,0,0"> 
     <Views:CustomerSelection Visibility="{Binding Path=IsCustomerSelectionVisible, Converter={StaticResource boolToVisibilityConverter}}" /> 
     <Views:CustomerInformation Visibility="{Binding Path=IsCustomerInformationVisible, Converter={StaticResource boolToVisibilityConverter}}" /> 
     <Views:CustomerPreferences Visibility="{Binding Path=IsCustomerPreferencesVisible, Converter={StaticResource boolToVisibilityConverter}}" /> 
     <Views:ProjectSelection Visibility="{Binding Path=IsProjectSelectionVisible, Converter={StaticResource boolToVisibilityConverter}}" /> 
     <Views:KitchenProjectPreferences Visibility="{Binding Path=IsKitchenProjectPreferencesVisible, Converter={StaticResource boolToVisibilityConverter}}" /> 
     <Views:OtherProjectProperties Visibility="{Binding Path=IsOtherProjectPropertiesVisible, Converter={StaticResource boolToVisibilityConverter}}" /> 
    </Grid>  

而在底層視圖模型我只設置了相應的屬性使得用戶控件的一個可見。

+0

看起來不錯,但是您是否最初加載所有視圖及其組件? – WhoIsNinja 2010-12-16 15:59:07

+0

在我的情況是,因爲我有一個底層視圖模型和兩個子視圖模型;並且它們包裝已經加載的兩個域對象。我不知道你的情況。您可以選擇延遲視圖模型中的數據加載,直到它們變爲可見(如果適用)。 – 2010-12-16 16:01:00

+0

這就是對的。謝謝路德維希! – WhoIsNinja 2010-12-16 16:02:40

0

更好的方法是在主視圖中定義所有視圖的數據模板。 然後有一個itemscontrol(將其綁定到mainviewmodel的viewmodels屬性集合)

現在基於menuitem單擊,清除viewmodels集合並添加所需的視圖。