![](/img/trans.png)
[英]How do I Encapsulate a WPF ViewModel/View UserControl as a Control
[英]inherit or encapsulate View/Viewmodel
我想將一個視圖/視圖模型封裝到另一個視圖/視圖模型中。 目的是擁有一個彈出窗口,滑動面板或您可以想到的常見行為,然后在其中插入自定義視圖/視圖模型。
我想使用泛型來做到這一點,但我有點卡住了
父視圖模型將如下所示
public class SidePanelViewModel<T>
{
public SidePanelViewModel(T enclosedViewModel)
{
EnclosedViewModel = enclosedViewModel;
}
public T EnclosedViewModel { get; private set; }
}
父視圖將像這樣
... whatever design and behavior ...
<ContentPresenter Content="{Binding EnclosedViewModel}"/>
... whatever design and behavior ...
在我的映射文件中,我想說明一下,但這是問題所在:
<DataTemplate DataType="{x:Type WPFTests:SidePanelViewModel}">
<WPFTests:SidePanelView />
</DataTemplate>
<DataTemplate DataType="{x:Type WPFTests:EnclosedViewModel}">
<WPFTests:EnclosedView />
</DataTemplate>
這是行不通的,因為viewmodel SidePanelViewModel的構造函數需要創建一個類型。
我想我想做的是讓一個視圖/視圖模型從另一個視圖/視圖模型繼承
希望有人能幫上忙
為什么需要使用<T>
?
您不能只使用常規object
或某種共享庫(例如IViewModel
或ViewModelBase
嗎?
在WPF中使用泛型類有時可能會很痛苦。
我建議您創建一個基類(抽象類),該類為您的(當然是虛擬的)方法實現默認行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.