那麼,我花了一點研究。首先,此代碼:
<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(事實證明,有些人對這些參數沒有任何信心,事實上,height/width是不爲零)。
對了,我忘了提:我發現在
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());
}
在THIC情況下,返回的ActualHeight 0
。
也許標準元素被繪製,並且不可能得到0
。我也嘗試設置Styles/Templates
,但高度並未設置爲零。原則上,如預期的那樣,確定它是在系統級設置的。
還是決定看看它通過Snoop
。
Part #1. Standard state
你可以看到本地值設置爲高。
Part #2. Using Arrange and Measure
一些鏈接:
UIElement.Arrange
UIElement.Measure
爲什麼你需要嗎? –
你想要什麼? –
對不起,編輯解釋。 – Samuel