幾天前我問了this question,但tbh的答案讓我更加困惑。所以我會問一個更簡單的問題:在Caliburn.micro切換Viewmodels/Views的簡單方法
(我正在使用Caliburn.Micro,這是一個WPF應用程序)。假設你有一個MainView/MainViewModel,它有AView/AViewModel和BView/BViewModel。您的MainView是一個網格,也是您希望用AView或BView填充的單元之一,具體取決於用戶的選擇。如果我只是想表現AView,我會做到以下幾點:
在的MainView:
<StackPanel Name="SP_Controls" VerticalAlignment="Bottom" Grid.Row="1" Grid.Column="0">
<ContentControl Name="ViewModelToShow" Margin="10" />
</StackPanel>
,並在MainViewModel:
public AViewModel ViewModelToShow{get; set;}
我天真的想法,現在會做一些事情像這樣:
private AViewModel _AVM;
private BViewModel _BVM;
public ... ViewModelToShow{ get; set;}
然後在代碼,例如,設置視圖模型以顯示:
ViewModelToShow = _BVM;
我唯一的問題是「...」,因爲每個ViewModel是不同的類。有沒有辦法與泛型做到這一點,或者我應該爲我的ViewModel定義一個基類,並將它們投射到這些基類中?但如果我這樣做,他們仍然會正確顯示。謝謝。
我不確定我完全理解你想要做什麼。你的VM可以繼承PropertyChangedBase甚至屏幕。我在這裏有一些WPF/CM示例:https://bitbucket.org/dbeattie –