MinWidth,MaxWidth,MinHeight,MaxHeight对<usercontrol>没有效果

时间:2015-07-21 07:38:02

标签: c# wpf xaml user-controls caliburn.micro

我正在学习使用Caliburn Micro框架创建WPF应用程序。

按照主页上的教程Basic Configuration,我删除了默认生成的<Window> xaml,而是<UserControl> xaml并通过我的AppBoostrapper引导它。< / p>

这是MainView.xaml:

<UserControl x:Class="SmartRenamer.Views.MainView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300"
             MinHeight="300"
             MinWidth="300"
             MaxHeight="500"
             MaxWidth="1000">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Menu IsMainMenu="True" Grid.Row="0">
            <MenuItem Header="_File">
                <MenuItem Header="_Open Folder..." x:Name="OpenFolder"></MenuItem>
            </MenuItem>
            <MenuItem Header="_About" />
        </Menu>
        <ScrollViewer HorizontalScrollBarVisibility="Visible" Grid.Row="1" MaxHeight="500" MaxWidth="1000">
            <StackPanel>
                <DataGrid x:Name="FilesList">

                </DataGrid>
            </StackPanel>
        </ScrollViewer>
    </Grid>
</UserControl>

问题是我想为我的应用设置MinWidth, MaxWidth, MinHeight, MaxHeight,但似乎MainWindow.xaml中的配置无效。

以下是两个屏幕截图,其中窗口仍然可以在定义的范围内重新调整大小:

Very small window Very big window 我在这里错了什么?

1 个答案:

答案 0 :(得分:0)

UserControl的width和height属性由保存该控件的容器设置。即在设计时使用的DesignWidth和DesignHeigth是在UserControl中设置的,但在运行时它将使用容器设置的值。

我对Caliburn Micro没有经验,但是似乎可以在引导程序中定义设计属性:

   var settings = new Dictionary<string, object>
   {
       { "Height" , 300},
       { "Width"  , 300},
   };

   DisplayRootViewFor<ViewModel>(settings);