WPF region多页面切换实现

在你的WPF应用程序中,如果你想要使用PRISM框架并且希望通过静态资源来定义区域名称,你可以这样做。首先,你需要确保你已经正确地设置了PRISM,并且在你的项目中定义了静态资源。

步骤 1: 定义静态资源
在App.xaml或其他资源字典文件中定义一个静态资源,用于存储区域名称。

Xaml
深色版本





步骤 2: 创建扩展类
创建一个扩展类来提供静态属性,该属性将用作区域名称。

Csharp
深色版本
using System.Windows;

namespace MyApp.Extensions
{
public static class PrismManager
{
public static readonly DependencyProperty MainViewRegionNameProperty =
DependencyProperty.RegisterAttached(“MainViewRegionName”, typeof(string), typeof(PrismManager), new PropertyMetadata(“MainRegion”));

    public static string GetMainViewRegionName(DependencyObject obj)
    {
        return (string)obj.GetValue(MainViewRegionNameProperty);
    }

    public static void SetMainViewRegionName(DependencyObject obj, string value)
    {
        obj.SetValue(MainViewRegionNameProperty, value);
    }
}

}
步骤 3: 在XAML中使用静态资源
在MainWindow.xaml中使用这个静态资源来设置ContentControl的RegionName。

Xaml
深色版本


App.xaml.cs
Csharp
深色版本
using Prism.Ioc;
using Prism.Unity;

namespace MyApp
{
public partial class App : PrismApplication
{
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
// 注册类型
containerRegistry.RegisterForNavigation();
containerRegistry.RegisterForNavigation();
containerRegistry.RegisterForNavigation();
}

    protected override Window CreateShell()
    {
        return Container.Resolve();
    }
}

}
MainViewModel
Csharp
深色版本
using Prism.Commands;
using Prism.Mvvm;
using Prism.Regions;

namespace MyApp
{
public class MainViewModel : BindableBase
{
private readonly IRegionManager _regionManager;

    public DelegateCommand ShowViewACommand { get; private set; }
    public DelegateCommand ShowViewBCommand { get; private set; }

    public MainViewModel(IRegionManager regionManager)
    {
        _regionManager = regionManager;

        ShowViewACommand = new DelegateCommand(ShowViewA);
        ShowViewBCommand = new DelegateCommand(ShowViewB);
    }

    private void ShowViewA()
    {
        _regionManager.RequestNavigate("MainRegion", nameof(ViewA));
    }

    private void ShowViewB()
    {
        _regionManager.RequestNavigate("MainRegion", nameof(ViewB));
    }
}

}
这样,你就通过静态资源定义了区域名称,并且可以在XAML中使用它。当你点击按钮时,相应的视图将会被加载到指定的区域中。

你可能感兴趣的:(wpf)