似乎我无法将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则不会。
答案 0 :(得分:3)
答案 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 = False
,ShowActivated = 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
强>
您可以看到本地值设置为高。
<强> Part #2. Using Arrange and Measure
强>
一些链接: