欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

WPF框架Prism中ViewModelLocator用法介紹

 更新時間:2022年02月11日 09:59:42   作者:痕跡g  
這篇文章介紹了WPF框架Prism中ViewModelLocator的用法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

建立連接

在WPF當中,需要為View與ViewModel建立連接, 我們需要找到View的DataContext, 如下所示:

建立連接的方式

如果你使用了解WPF當中如何綁定DataContext, 你應該能想到會有下面這些方式進行:

  • XAML設置
  • Code設置 (構造函數注入 或 ViewModelLocator)

XAML的方式:

 <UserControl.DataContext>
        <.../>
 </UserControl.DataContext>

代碼的方式:

    public partial class ViewA : UserControl
    {
        public ViewA()
        {
            InitializeComponent();
            this.DataContext = null; //設定
        }
    }

如果你使用過第三方的MVVM框架, 標準的ViewModelLocator可能如下所示:

嗯...確實,這些方式都可以建立View-ViewModel關系。

但是,這一切并不是Prism想表達的內容, 甚至不建議你按上面的方式去做, 因為這樣幾乎打破了開發(fā)的所有原則。

(我們把View與ViewModel的關系編碼的方式固定了下來, 通過靜態(tài)類去維護ViewModel的關系...)

Prism ViewModelLocator

在Prism當中, 你可以基于命名約定, 便能夠輕松的將View/ViewModel建議關聯(lián)。如下所示:

假設你已經為項目添加Views/ViewModels文件夾。此時, 你的頁面為ViewA, 則對應的ViewModel名稱為 ViewAViewModel。

下面則是錯誤的命名方法:

當遵循了命名規(guī)范后, 是不是意味著就能夠進行自動綁定? 不, 此時還需要在View當中聲明,允許當前View自動裝配ViewModel:

細心的你會發(fā)現, 這也就是為什么, 使用VisualStudio Tmeplate Pack創(chuàng)建的空白項目的時候, 為什么項目會為你默認創(chuàng)建Views/ViewModels文件夾。

當然, 任性的我們也可以選擇不遵循這個約定, 盡管它看起來似乎也能夠很好的進行工作...

更改約定

實際的開發(fā)中, 我們可能有些清空無法遵循此規(guī)則, 如下所示,我們定義Controls文件夾放View, ViewModels文件夾放ViewModel:

修改方式:

1.使用ViewModelLocationProvider設置默認視圖類型指定的ViewModel。

ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver((viewType) =>
            {
                var viewName = viewType.FullName;
                var assemblyName = viewType.Assembly.FullName;
                var vmName = $"{viewName.Replace("Controls", "ViewModels")}ViewModel, {assemblyName}";
                return Type.GetType(vmName);
            });

該代碼的最終意思就是,將原有的View命名控件命名改成了符合約定的命名。

2.使用ViewModelLocationProvider指定View與ViewModel的類型。

        public void RegisterTypes(IContainerRegistry containerRegistry)
        {
            ViewModelLocationProvider.Register<ControlA, ControlAViewModel>();

            //ViewModelLocationProvider.Register<ControlA>(() => new ControlAViewModel() { Text = "Hello from Factory" });
        }

到此這篇關于WPF框架Prism中ViewModelLocator用法的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • WPF控件模板與其觸發(fā)器

    WPF控件模板與其觸發(fā)器

    這篇文章介紹了WPF控件模板與其觸發(fā)器,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-01-01
  • ASP.Net前臺調用后臺變量的方法

    ASP.Net前臺調用后臺變量的方法

    asp.net下前臺數據的調用輸出方法,需要的朋友可以參考下。
    2010-07-07
  • .Net行為型設計模式之職責鏈模式(Chain of Responsibility)

    .Net行為型設計模式之職責鏈模式(Chain of Responsibility)

    這篇文章介紹了.Net行為型設計模式之職責鏈模式(Chain of Responsibility),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • asp.net Timer的使用方法

    asp.net Timer的使用方法

    使用方法很簡單,對于需要使用asp.net下timer控件的使用是個不錯的例子
    2008-10-10
  • ASP.Net生成一個簡單的圖片

    ASP.Net生成一個簡單的圖片

    ASP.Net生成一個簡單的圖片...
    2006-10-10
  • .Net?6簡介并和之前版本寫法做對比

    .Net?6簡介并和之前版本寫法做對比

    這篇文章介紹了.Net?6簡介并和之前版本寫法做對比,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • ASP.NET Table 表格控件的使用方法

    ASP.NET Table 表格控件的使用方法

    使用 Table 控件可以在 ASP.NET 網頁上創(chuàng)建服務器可編程的表格。如果要創(chuàng)建的是靜態(tài)表格(運行時不會在其中添加或更改內容的表格),則應使用 HTML 表格,而不是 Table 控件。
    2016-04-04
  • WPF框架Prism中導航Navigation用法介紹

    WPF框架Prism中導航Navigation用法介紹

    這篇文章介紹了WPF框架Prism中導航Navigation的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • ASP.NET?MVC模式簡介

    ASP.NET?MVC模式簡介

    這篇文章介紹了ASP.NET?MVC模式,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-03-03
  • ASP.Net Core MVC基礎系列之中間件

    ASP.Net Core MVC基礎系列之中間件

    這篇文章介紹了ASP.Net Core MVC的中間件,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-02-02

最新評論