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

时间:2013-07-22 17:49:30

标签: c# wpf

似乎我无法将Window元素的Height属性设置为0.是否有解释?

此代码不起作用,也不会强制代码中的高度为0。 ActualHeight总是为我的机器返回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则不会。

2 个答案:

答案 0 :(得分:3)

由于您没有边框,只需HideShow窗口,而不是将其Height设置为零或正值。

答案 1 :(得分:1)

好吧,我花了一点研究。首先,这段代码:

<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" />

返回6高度的值,因为您有14。我在Windows XP上运行此代码,我怀疑你有不同的操作系统。接下来,我在ResizeMode中设置参数NoResize,并获得高度2.

如果设置ResizeMode="CanResizeWithGrip",我们会得到17个像素,这符合Grip。因此,我们看到系统本身会插入标准元素,即使参数是:WindowStyle="None", AllowsTransparency="True"

我还尝试设置参数:ShowInTaskbar = FalseShowActivated = False,无效,窗口不可见,但高度为2(事实证明有些人对这些参数一无所知,事实上,身高/宽度不是零。)

顺便说一句,我忘了提及:我在

中显示了所有值
ContentRendered="Window_ContentRendered"
像那样:

private void Window_ContentRendered(object sender, EventArgs e)
{
    MessageBox.Show(this.Height.ToString()); 
    MessageBox.Show(this.ActualHeight.ToString());
}

只是尝试设置SizeToContent = WidthAndHeight:相同的高度 - 2,但Window不可见。

唯一有所帮助的东西,它:

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());
}

在这种情况下,ActualHeight返回0

也许绘制了标准元素,并且无法获得0。我也尝试设置Styles / Templates,但高度未设置为零。原则上,正如预期的那样,它肯定是在系统级别设置的。

仍然决定通过Snoop查看。

<强> Part #1. Standard state

enter image description here

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

<强> Part #2. Using Arrange and Measure

enter image description here

一些链接:

UIElement.Arrange

UIElement.Measure