如何使用MVVM模式将窗口高度限制为屏幕分辨率的百分比?

时间:2014-06-29 14:23:32

标签: wpf mvvm

我有一个以这种方式配置的窗口:

<Window x:Class="Catalogo.Views.dlgGenerosContenidosAsignarView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="dlgGenerosAsignar"
        SizeToContent="WidthAndHeight"
        WindowStartupLocation="CenterOwner">

我希望窗口适应其内容,因此我使用SizeToContent="WidthAndHeight"。但是如果内容太大,它可能会超出屏幕,所以我想将MaxHeight属性的值限制在屏幕的高度。

我怎么能用MVVM模式做到这一点?

我可以使用绑定到我的ViewModel中的属性,该属性使用System.Windows.SystemParameters来获取屏幕的高度并设置绑定到View的属性,但我认为应该设置窗口的大小在View中,而不是ViewModel,所以我想知道是否有其他解决方案。

1 个答案:

答案 0 :(得分:3)

在遵循MVVM方法时,使用后面的代码存在很多困惑。这真是一个完美的情况,你想要使用背后的代码。正如您所注意到的,这纯粹与视图相关,不应该在视图模型中。没有理由,也没有可能从中受益。

所以,如果我是你,我会在Window.Loaded事件中添加一个处理程序,进行测量并将Window.Height设置为所需的Height

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // Assuming that you want the Height to be 80% of the screen Height
    Height = SystemParameters.PrimaryScreenHeight * 0.8;
}