WPF的Prism框架的使用

安装Prism.DryIoc库:

WPF的Prism框架的使用_第1张图片

Prism的区域和模块化:

一个区域可以显示一个用户控件

一个模块就是一个项目,也就是一个类库

动态切换用户控件的案例:


    
        
        
    
    
        
public partial class App
{
    protected override Window CreateShell()
    {
        return Container.Resolve();
    }

    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
        // 依赖注入
        containerRegistry.RegisterForNavigation();
        containerRegistry.RegisterForNavigation();
        containerRegistry.RegisterForNavigation();
    }
}
internal class MainViewModel : BindableBase
{
    private readonly IRegionManager regionManager;
    public DelegateCommand OpenCommand { get; private set; }
    public MainViewModel(IRegionManager regionManager)
    {
        OpenCommand = new DelegateCommand(Open);
        this.regionManager = regionManager;
    }

    private void Open(string obj)
    {
        regionManager.Regions["ContentRegion"].RequestNavigate(obj);
    }
}

多模块的情况下动态切换一个区域的用户控件:

大部分的代码是和上面一样的

模块A中的ModuleAProfile文件:

namespace ModuleA
{
    public class ModuleAProfile : IModule
    {
        public void OnInitialized(IContainerProvider containerProvider)
        {
        }

        public void RegisterTypes(IContainerRegistry containerRegistry)
        {
            // 依赖注入
            containerRegistry.RegisterForNavigation();
        }
    }
}

主项目中的App.xaml:

public partial class App
{
    protected override Window CreateShell()
    {
        return Container.Resolve();
    }

    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
    }

    protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
    {
        moduleCatalog.AddModule();
        moduleCatalog.AddModule();
        base.ConfigureModuleCatalog(moduleCatalog);
    }
}

 在xaml文件中编写如下代码,自动找寻ViewModels里面的对应文件,根据前缀寻找:

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

你可能感兴趣的:(WPF,WPF,Prism)