C#-WPF-Prism.DryIoc-【1】环境搭建

Posted on 2022-04-20 11:18  轻吟浅唱,蓦然花开  阅读(1651)  评论(2编辑  收藏  举报

  我的环境:VS2022、.Net6.0

【1】创建wpf应用程序

 

 【2】创建两个文件夹 Views 和ViewModels,并在对应的文件夹中添加MainView(将把它作为启动窗口)和MainViewModel

 

 【3】安装Nuget包 Prism.DryIoc 可通过以下两种方式的任意一种安装

 

 【4】修改App.xaml 将下图(4.1)修改为图(4.2)

图(4.1):

 

 图(4.2):

 

<prism:PrismApplication x:Class="Wpf_Prsim.DryIoc_EnvironmentConfiguration.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:Wpf_Prsim.DryIoc_EnvironmentConfiguration"
             xmlns:prism="http://prismlibrary.com/">
    <Application.Resources>
         
    </Application.Resources>
</prism:PrismApplication>

 

 变化的内容:将Application类改为了PrismApplication,删除了StartupUri

【5】修改App.xaml.cs 将下图(5.1)修改为图(5.2)

图(5.1):

 

 图(5.2):

 

 /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : PrismApplication
    {
        protected override Window CreateShell()
        {
            return Container.Resolve<MainView>();
        }

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {

        }
    }

 

 变化的类容

  1.将App继承于PrismApplication(您也可以不用写继承)并实现了两个抽象成员(快捷键 Alt+Enter Enter,如果没有实现抽象类的提示请先编译一下项目)

  2.添加了一行代码  return Container.Resolve<MainView>();  从容器中取出MainView作为主窗口

  3.注意添加对应的命名空间(快捷键 Alt+Enter Enter)

 【6】启动项目

 

 可以看到 MainView已经正常启动,如果希望自动绑定上下文到MainViewModel只需要在MainView.xaml 中添加

  xmlns:prism="http://prismlibrary.com/"
  prism:ViewModelLocator.AutoWireViewModel="True"

 

<Window x:Class="Wpf_Prsim.DryIoc_EnvironmentConfiguration.Views.MainView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Wpf_Prsim.DryIoc_EnvironmentConfiguration.Views"
        xmlns:prism="http://prismlibrary.com/"
        prism:ViewModelLocator.AutoWireViewModel="True"
        mc:Ignorable="d"
        Title="MainView" Height="450" Width="800">
    <Grid>
        
    </Grid>
</Window>

完成!谢谢。