【问题标题】:Resizing window when view changes视图更改时调整窗口大小
【发布时间】:2014-09-13 19:30:07
【问题描述】:

我有一个 WPF/Prism/MVVM 应用程序,它带有一个登录屏幕,后面跟着几个用户屏幕(客户摘要、订单详细信息等)。登录屏幕比其他屏幕小。从登录屏幕切换到下一个屏幕时如何调整窗口大小?

【问题讨论】:

  • 出于好奇,为什么不use separate Windows,或者有一个以登录为中心的全尺寸窗口?

标签: wpf mvvm prism


【解决方案1】:

我也有同样的需求,不确定我所做的是否“正确”,但它确实有效。我最终做的是创建一个“ShellWindowService”。然后注册该服务(我使用 Unity)并公开一个 ChangeWindowSize 函数。

然后基本上,我可以通过 DI 或点击 ServiceLocator 访问服务

ServiceLocator.Current.GetInstance<Common.Services.ShellWindowService>();

现在,我可以使用此服务在应用程序的任何位置更改 shell 窗口的大小,只需使用 ShellWindowService。

【讨论】:

    【解决方案2】:

    我使用INavigationAware 暴露的OnNavigatedTo 来拦截导航并更改主窗口大小,代码如下所示:

    public void OnNavigatedTo(NavigationContext navigationContext)
            {
    
                var activeView = navigationContext.NavigationService.Region.ActiveViews.First() as UserControl;
                var window = Window.GetWindow(activeView);
                window.Width = activeView.Width;
                window.Height = activeView.Height;
            }
    

    【讨论】:

      猜你喜欢
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      相关资源
      最近更新 更多