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(); }
浙公网安备 33010602011771号