我正在WPF中写一个模态对话框。我如何设置一个WPF窗口没有关闭按钮?我仍然希望它的WindowState有一个正常的标题栏。
我找到了ResizeMode、WindowState和WindowStyle,但这些属性都不允许我隐藏关闭按钮,而是显示标题栏,就像在模态对话框中一样。
我正在WPF中写一个模态对话框。我如何设置一个WPF窗口没有关闭按钮?我仍然希望它的WindowState有一个正常的标题栏。
我找到了ResizeMode、WindowState和WindowStyle,但这些属性都不允许我隐藏关闭按钮,而是显示标题栏,就像在模态对话框中一样。
当前回答
这就是你的问题所在。窗口框右上方的关闭按钮不是WPF窗口的一部分,但它属于由操作系统控制的窗口框的一部分。这意味着你必须使用Win32互操作来实现。
或者,您可以使用noframe并提供您自己的“框架”或根本没有框架。
其他回答
尝试在窗口中添加关闭事件。将此代码添加到事件处理程序中。
e.Cancel = true;
这样可以防止窗口关闭。这与隐藏关闭按钮具有相同的效果。
XAML 代码
<Button Command="Open" Content="_Open">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
应该工作
编辑-在你的瞬间,这个线程展示了如何做到这一点,但我不认为窗口有一个属性来获得你想要的而不失去正常的标题栏。
编辑2 这个线程展示了一种方法,但你必须将自己的风格应用到系统菜单,它展示了一种方法,你可以这样做。
这就是你的问题所在。窗口框右上方的关闭按钮不是WPF窗口的一部分,但它属于由操作系统控制的窗口框的一部分。这意味着你必须使用Win32互操作来实现。
或者,您可以使用noframe并提供您自己的“框架”或根本没有框架。
使用WindowStyle="SingleBorderWindow",这将隐藏WPF窗口的最大和最小按钮。
将WindowStyle属性设置为None,这将隐藏控制框和标题栏。不需要内核调用。