WPF 窗口不应移动、调整大小,应仅包含最小化、关闭按钮

Mar*_*ria 3 wpf xaml maximize-window

我正在尝试设置 WPF 窗口。

  • 窗口应始终处于最大化状态
  • 窗口不能移动或调整大小
  • 它应该包含最小化和关闭按钮但不包含最大化按钮

我尝试了以下 XAML 代码

<Window x:Class="BasicImagingStandAlone"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:myUserControl="clr-namespace:WpfUserControlLibrary;assembly=WpfUserControlLibrary"
    Title="BasicImagingStandAlone" Icon="desktopicon.png" MinWidth="600" MinHeight="350" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    Height="600" Width="1200" WindowState="Maximized" WindowStyle="None"  ResizeMode="NoResize">
</Window>
Run Code Online (Sandbox Code Playgroud)

xaml 的输出是处于最大化状态的窗口,无法移动或调整大小,但没有按钮。我怎样才能一次达到所有要求?

Ign*_*ius 6

这个问题已经快 2 年了,但以防万一有人有相同的要求。

在 WPF 中,您可以使用 helper 类HwndSource挂钩到窗口过程,然后可用于处理窗口消息。

所以在XAML集WindowState="Maximized"ResizeMode="CanMinimize"以及覆盖SourceInitialized

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525"
    WindowState="Maximized" ResizeMode="CanMinimize" SourceInitialized="MainWindow_SourceInitialized">
Run Code Online (Sandbox Code Playgroud)

和代码隐藏(对这个 SO question 中的答案的修改):

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525"
    WindowState="Maximized" ResizeMode="CanMinimize" SourceInitialized="MainWindow_SourceInitialized">
Run Code Online (Sandbox Code Playgroud)

不要忘记包括: using System.Windows.Interop;

这应该满足 OP 的 3 个要求:

  • 窗口处于最大化状态
  • 窗口不能移动或调整大小(包括通过拖动或双击标题栏)
  • 启用窗口的最小化和关闭按钮,但禁用恢复/最大化按钮