首页 新闻 会员 周边

C# WPF Prism区域里的区域无法默认选中?

0
[待解决问题]

主页的区域设置后可以默认选中

void CreateMenuBar()
{
    MenuBars.Add(new MenuBar() { Icon = "Home", Title = "首页", NameSpace = "IndexView" });
    MenuBars.Add(new MenuBar() { Icon = "Cog", Title = "设置", NameSpace = "SettingsView" });
}

/// <summary>
/// 配置首页初始化参数
/// </summary>
public void Configure()
{
 	regionManager.Regions[PrismManager.MainViewRegionName].RequestNavigate("IndexView");
}

但是进入二级页面后,再设置的区域无法默认选中

public class SettingsViewModel : BindableBase
{
    public SettingsViewModel(IRegionManager regionManager)
    {
        MenuBars = new ObservableCollection<MenuBar>();
        this.regionManager = regionManager;
        NavigateCommand = new DelegateCommand<MenuBar>(Navigate);
        CreateMenuBar();
        //this.regionManager.Regions[PrismManager.SettingsViewRegionName].RequestNavigate("SettingsUserView");
    }

    private void Navigate(MenuBar obj)
    {
        if (obj == null || string.IsNullOrWhiteSpace(obj.NameSpace))
            return;
        regionManager.Regions[PrismManager.SettingsViewRegionName].RequestNavigate(obj.NameSpace);
    }

    public DelegateCommand<MenuBar> NavigateCommand { get; private set; }
    private ObservableCollection<MenuBar> menuBars;
    private readonly IRegionManager regionManager;

    public ObservableCollection<MenuBar> MenuBars
    {
        get { return menuBars; }
        set { menuBars = value; RaisePropertyChanged(); }
    }


    void CreateMenuBar()
    {
        MenuBars.Add(new MenuBar() { Icon = "Cog", Title = "系统设置", NameSpace = "SettingsUserView" });
        MenuBars.Add(new MenuBar() { Icon = "Palette", Title = "个性化", NameSpace = "SkinView" });
        MenuBars.Add(new MenuBar() { Icon = "Information", Title = "关于更多", NameSpace = "AboutView" });
    }

使用this.regionManager.Regions[PrismManager.SettingsViewRegionName].RequestNavigate("SettingsUserView");无法跳转,延迟执行也没用,请问这是什么原因?

遗失的美好灬的主页 遗失的美好灬 | 菜鸟二级 | 园豆:228
提问于:2023-10-16 11:16
< >
分享
所有回答(2)
0

看看.................

tea2007 | 园豆:1 (初学一级) | 2023-10-16 14:43
0

在Prism中,当你使用RequestNavigate来导航到一个区域的视图时,确保你的视图已经被注册到对应的区域。如果视图未被正确注册,RequestNavigate将无法找到对应的视图并无法导航。

在你的情况下,你希望在SettingsViewModel中导航到PrismManager.SettingsViewRegionName区域的视图。确保以下几点:

确保在模块初始化或应用程序启动时,已经正确注册了你的视图到相应的区域。这可以通过使用RegionManager来完成,就像你在Configure方法中做的一样。

确保PrismManager.SettingsViewRegionName 区域已经被创建,如果没有,你需要在应用程序初始化时创建这个区域。

检查是否有错误的视图名称或命名空间,确保它们与实际的视图匹配。

确保在调用RequestNavigate之前,你的视图已经被添加到区域。

如果你仍然遇到问题,可以使用Prism的调试功能,设置断点来查看具体的导航问题。你可以查看是否有任何错误消息或异常,以帮助找到问题所在。此外,确保你的视图和视图模型正确绑定和配置,以便正确显示和导航到你的视图。

Technologyforgood | 园豆:5744 (大侠五级) | 2023-10-16 19:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册