视图更改时调整窗口大小

时间:2014-09-13 19:30:08

标签: wpf mvvm prism

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

2 个答案:

答案 0 :(得分:0)

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

然后基本上,我可以从DI或通过命中ServiceLocator

访问该服务
ServiceLocator.Current.GetInstance<Common.Services.ShellWindowService>();

现在,我可以使用此服务通过简单地使用ShellWindowService来从应用程序中的任何位置更改shell窗口的大小。

答案 1 :(得分:0)

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

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;
        }