如何在WPF应用程序中使用组合根时基于分辨率获取视图

时间:2014-07-27 05:01:34

标签: c# wpf mvvm dependency-injection unity-container

我有一个场景,目标PC的分辨率有不同的屏幕分辨率。 XAML可以在某种程度上处理它,但当分辨率从800 * 600到1900 * 1400不等时,最好有两个不同的视图/布局(XAML文件)。

我的应用程序是一个MVVM应用程序,我倾向于使用Unity作为IOC容器。代码看起来像

public partial class App:Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        ComposeObjects();
        Application.Current.MainWindow.Show();
    }

    private void ComposeObjects()
    {
        ......
        ......

        Application.Current.MainWindow = container.Resolve<MainWindowView>();
    }
}

有没有办法可以根据分辨率解析MainWindowView和其他视图。我会为MainWindow UI提供不同布局的几个视图。

此外,MainWindowView XAML将包含对许多其他视图的引用,这些视图也可能需要根据屏幕分辨率进行解析。

由于

1 个答案:

答案 0 :(得分:0)

您可以使用Screen.PrimaryScreen.WorkingArea(在System.Windows.Forms命名空间中)。这会将屏幕尺寸返回为Rectangle

从这里为您的应用程序创建多个视图或相应地更改控件的大小