我的环境: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>
完成!谢谢。