prism启动应用程序时自动加载首页

因为prism框架是以区域形式加载userControl的,所以当主窗口的MainViewModel加载构造函数的时候,prsim还未执行完RegisterTypes方法,导致无法在MainViewModel调用Navigate(【首页区域名称】)的方式加载默认首页。

目前经过学习,找到有两种办法解决【以下方法均经过本人验证,均可行】。

方法一,在MainView中将Loaded窗口事件转换到Command,然后到ViewModel中执行导航到默认首页的功能:

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Loaded">
            <i:InvokeCommandAction Command="{Binding OnLoadedCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>

 

方法二,添加一个接口,再让MainViewModel实现此接口,然后重写App.xaml.cs中的方法,然后调用此接口的实现,从而最终实现加载默认首页的效果。

public interface IConfigureService
{
    void Configure();
}
public class MainViewModel : BindableBase, INavigationAware, IConfigureService
{
XXXX

public void Configure()
    {
        CreateMenuBar();
        Navigate(MenuBars[0]);
    }
}
protected override void OnInitialized()
        {
            if (App.Current.MainWindow is {DataContext: IConfigureService service})
            {
                service.Configure();
            }
            base.OnInitialized();
        }

 

posted on 2022-03-16 00:02  想和闪电一样  阅读(882)  评论(2)    收藏  举报

导航