C# 如何将窗口大小设置为0?

C# 如何将窗口大小设置为0?,c#,wpf,C#,Wpf,似乎我无法将Window元素的Height属性设置为0。有什么解释吗 此代码不起作用,在代码隐藏中强制高度为0也不起作用。对于我的机器,实际高度始终返回14.0 <Window x:Class="AnimWindow.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/

似乎我无法将Window元素的Height属性设置为0。有什么解释吗

此代码不起作用,在代码隐藏中强制高度为0也不起作用。对于我的机器,实际高度始终返回14.0

<Window x:Class="AnimWindow.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="0" Width="525" AllowsTransparency="True" WindowStyle="None" Background="YellowGreen" >

</Window>
谢谢


编辑:抱歉,忘记了一个解释:我想创建一个类似outlook的通知弹出窗口来通知用户一些事情。虽然不透明度工作得很好,但设置动画或将高度设置为0却不行。

因为没有边框,只需和窗口,而不是将其高度设置为零或正值。

因为没有边框,只需和窗口,而不是将其高度设置为零或正值。

好吧,我花了一点时间进行研究。首先,该代码:

<Window x:Class="ZeroHwindow.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="0" Width="525" 
    WindowStyle="None" 
    AllowsTransparency="True"
    Background="Yellow" />
就像这样:

private void Window_ContentRendered(object sender, EventArgs e)
{
    MessageBox.Show(this.Height.ToString()); 
    MessageBox.Show(this.ActualHeight.ToString());
}
只是尝试将SizeToContent=WidthAndHeight设置为相同的高度-2,但窗口不可见

唯一有帮助的是:

private void Window_ContentRendered(object sender, EventArgs e)
{
    this.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
    this.Arrange(new Rect(0, 0, 0, 0));

    MessageBox.Show(this.Height.ToString()); 
    MessageBox.Show(this.ActualHeight.ToString());
}
在这种情况下,实际高度返回0

可能绘制了一个标准元素,不可能得到0。我还尝试设置样式/模板,但高度没有设置为零。原则上,正如预期的那样,它肯定是在系统级别设置的

还是决定通过窥探来观察它

第一部分。标准状态

您可以看到本地值设置为高

第二部分。使用排列和测量

一些链接:


嗯,我花了一点时间研究。首先,该代码:

<Window x:Class="ZeroHwindow.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="0" Width="525" 
    WindowStyle="None" 
    AllowsTransparency="True"
    Background="Yellow" />
就像这样:

private void Window_ContentRendered(object sender, EventArgs e)
{
    MessageBox.Show(this.Height.ToString()); 
    MessageBox.Show(this.ActualHeight.ToString());
}
只是尝试将SizeToContent=WidthAndHeight设置为相同的高度-2,但窗口不可见

唯一有帮助的是:

private void Window_ContentRendered(object sender, EventArgs e)
{
    this.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
    this.Arrange(new Rect(0, 0, 0, 0));

    MessageBox.Show(this.Height.ToString()); 
    MessageBox.Show(this.ActualHeight.ToString());
}
在这种情况下,实际高度返回0

可能绘制了一个标准元素,不可能得到0。我还尝试设置样式/模板,但高度没有设置为零。原则上,正如预期的那样,它肯定是在系统级别设置的

还是决定通过窥探来观察它

第一部分。标准状态

您可以看到本地值设置为高

第二部分。使用排列和测量

一些链接:


你为什么需要这个?你想要它做什么?哦,抱歉,为了解释而编辑。@Samuel如果你需要一个弹出窗口,请使用弹出窗口,而不是窗口。虽然弹出窗口听起来完全合理,我会看一看,但我仍然好奇什么约束禁止高度为0,它不是MinHeights。你为什么需要这个?你想要它做什么?哦,抱歉,编辑用于解释。@Samuel如果您需要弹出窗口,请使用弹出窗口,而不是窗口。虽然弹出窗口听起来完全合理,我会看一看,但我仍然很好奇是什么约束禁止0的高度,而不是MinHeights感谢您的回答,我扩展了我的问题来解释我的动机。它是为了动画。最后,一个隐藏也将被调用,但我想实现一些收缩效果。谢谢你的回答,我扩展了我的问题来解释我的动机。它是为了动画。最后一个隐藏将被调用,但我想实现一些收缩效果。