簡體   English   中英

如何將WPF ViewModel / View UserControl封裝為控件

[英]How do I Encapsulate a WPF ViewModel/View UserControl as a Control

我建立了一個WPF UserControl View / ViewModel對:視圖XAML處理布局和綁定,而ViewModel處理邏輯,與推薦的MVVM模式保持一致。

我希望能夠重新使用它作為控件。

如何隱藏/封裝與視圖關聯的ViewModel,以便可以像使用標准控件(例如按鈕)一樣使用控件?

即如何隱藏控件的viewmodel?

取決於如何將ViewModel類綁定到控件。 如果您這樣做:

 YourControl()
{
   DataContex = new ViewModel();
}

然后我沒有看到任何問題。 添加對您的控件的引用並使用它。

您可以在XAML中將ViewModel創建為StaticResource。 將DataContext設置為ViewModel的問題在於,您不能使用不再可以從使用控件的窗口或頁面中使用DataContext的情況。

在您的XAML中聲明您的ViewModel:

<myNS:MyViewModel x:Key="ViewModel />

在XAML中引用您的視圖模型:

<TextBlock Text="{Binding Source={StaticResource ViewModel}, Path=TextToBind}" />

在您的Code Behind中,您可以快速訪問和初始化,我通常會創建一個屬性以便於參考我的視圖模型。

 private MyViewModel viewModel
 {
    get { return this.Resources["ViewModel"] as MyViewModel; }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM