gpt4 book ai didi

c# - Prism WPF : Loading a User Control on Startup

转载 作者:行者123 更新时间:2023-12-03 10:32:39 24 4
gpt4 key购买 nike

我已经看到了一些使用 Prism for WPF 仅在一个窗口中更改用户控件的示例,它看起来像这样:

Bootstrap .cs

    protected override void ConfigureContainer()
{
base.ConfigureContainer();

Container.RegisterType(typeof(object), typeof(ViewA), "ViewA");
Container.RegisterType(typeof(object), typeof(ViewB), "ViewB");
}

MainWindowViewModel.cs
    public class MainWindowViewModel : BindableBase
{
private readonly IRegionManager _regionManager;

public DelegateCommand<string> NavigateCommand;


public MainWindowViewModel(IRegionManager regionManager)
{
_regionManager = regionManager;

NavigateCommand = new DelegateCommand<string>(ExecuteNavigateCommand);
}

private void ExecuteNavigateCommand(string uri)
{
_regionManager.RequestNavigate("ContentRegion", uri);
}
}

MainWindow.xaml
<Button Grid.Row="1" Grid.Column="1" Command="{Binding NavigateCommand}" CommandParameter="ViewA" FontSize="16" Content="View A" Margin="4"/>
<Button Grid.Row="1" Grid.Column="2" Command="{Binding NavigateCommand}" CommandParameter="ViewB" FontSize="16" Content="View B" Margin="4"/>

您可以单击它, View 将发生变化。但是当你启动它时,没有加载用户控件,只有主窗口。我的问题是 如何在应用程序启动时将用户控件加载到 MainWindow?

最佳答案

你在这里有不同的选择。首先,注册区域的 View ,以便自动发现和显示。如果您以后不想导航到该 View ,则此方法有效。

_regionManager.RegisterViewWithRegion("MyRegion", typeof(ViewA));

或者,您可以在应用程序启动完成后导航到 View 。即从 Bootstrapper.InitializeModules的末尾.如果 Bootstrap 不知道 View ,或者您此时也想做其他事情,您也可以发布类似 ModulesInitialized 的事件并让定义您的 View 的模块订阅该事件。
// in the assembly defining the interfaces shared between your modules
public class ModulesInitialized : PubSubEvent {}

// in the bootstrapper.InitializeModules
Container.Resolve<IEventAggregator>().GetEvent<ModulesInitialized>().Publish();

// in the module defining viewA
_eventAggregator.GetEvent<ModulesInitialized>().Subscribe( () => _regionManager.Requestnavigate( "MyRegion", "ViewA" ), true );

关于c# - Prism WPF : Loading a User Control on Startup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50445005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com