如何避免窗口小于WPF中UserControl的最小大小?

Ign*_*cia 17 .net size wpf resize

我有一个usercontrol(一个状态栏),它有一个隐含的最小大小(不通过属性设置,我的意思是,当它达到最小大小时,它不能被减少并且被裁剪).

有没有办法让主窗口知道UserControl将被裁剪并且不允许它减小它的大小?有了像WPF这样的智能布局系统,它必须是一种知道它正在裁剪的方式.看下一张图片:

在此输入图像描述

Ari*_*jee 16

包括MinHeight="MinSize" MinWidth="MinSize"在该<Window>部分内

MinSize =所需的整数值ex 400/350等

<Window x:Class="IOTA_WPF.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" 
    WindowState="Maximized"
    MinHeight="400" MinWidth="650">
Run Code Online (Sandbox Code Playgroud)

  • MinSize 不是一个固定值,它取决于 DPI 设置、字体大小设置等,所以据我所知这不是一个有效的解决方案。无论如何感谢您的尝试。 (6认同)
  • 这就是我在问题中问的问题;) (5认同)

den*_*ver 10

我知道这是事后几年,但我最近碰到了这个问题,因为我正在处理类似的问题.这就是我解决它的方式.解决方案特定于我的问题,但可以改变以获得各种所需的调整大小行为.

首先设置窗口,使其最初调整大小以适合其内容.

<Window ...
    SizeToContent="WidthAndHeight" >
Run Code Online (Sandbox Code Playgroud)

接下来,我设置每个嵌入式控件,以便报告所需的宽度和高度.大多数内置控件都可以为您完成此操作.您可以通过覆盖MeasureOverride来执行自定义控件,也可以只为控件设置宽度和高度.使其成为您希望控件获得的最小大小.

<MyControl Name="_MyControlName" Width="640" Height="480" />
Run Code Online (Sandbox Code Playgroud)

不要担心这些"硬"编码值会影响控件的行为.我们下一步处理.现在,当窗口显示时,它将自动调整自身以适合您的控件.

接下来订阅窗口加载的事件.

<Window ...
    SizeToContent="WidthAndHeight" Loaded="Window_Loaded" >
Run Code Online (Sandbox Code Playgroud)

在窗口加载事件中,您可以调整窗口的大小调整行为及其中的控件.你可以使它控制可以调整大小.您可以将窗口的最小大小设置为刚刚放置的大小.这里的优点是您只需允许布局系统为您找到一个好的布局.你想利用它的工作.

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        // We know longer need to size to the contents.
        ClearValue(SizeToContentProperty);
        // We want our control to shrink/expand with the window.
        _MyControlName.ClearValue(WidthProperty);
        _MyControlName.ClearValue(HeightProperty);
        // Don't want our window to be able to get any smaller than this.
        SetValue(MinWidthProperty, this.Width);
        SetValue(MinHeightProperty, this.Height);
    }
Run Code Online (Sandbox Code Playgroud)

您在Window_Loaded方法中放置的内容取决于您尝试完成的行为.

希望这可以帮助其他人节省时间.


Phi*_*ght 1

您可以设置控件的 MinHeight 属性以防止其变得小于所需值。