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