我有一个以这种方式配置的窗口:
<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,所以我想知道是否有其他解决方案。
答案 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;
}