2013-07-22 69 views
2

看來我無法將窗口元素的Height屬性設置爲0.是否有解釋?如何將窗口大小設置爲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不會。

+4

爲什麼你需要嗎? –

+0

你想要什麼? –

+0

對不起,編輯解釋。 – Samuel

回答

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上運行這個代碼,我懷疑你有不同的操作系統。接下來,我設置的參數ResizeModeNoResize,並得到了高度2.

如果設置ResizeMode="CanResizeWithGrip",我們得到了高達17個像素,這將符合Grip。因此,我們可以看到系統本身插入了標準元素,即使參數爲:WindowStyle="None", AllowsTransparency="True"

我也嘗試設置參數:ShowInTaskbar = FalseShowActivated = 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

enter image description here

你可以看到本地值設置爲高。

Part #2. Using Arrange and Measure

enter image description here

一些鏈接:

UIElement.Arrange

UIElement.Measure

3

由於您沒有邊框,只需要HideShow窗口,而不是將它的Height設置爲零或正值。

+0

感謝你的回答,我擴展了我的問題來解釋我的動機。 – Samuel

+0

@Samuel這並不能解釋爲什麼使用顯示/隱藏不會更好,但... –

+0

它的目的是爲動畫。最後還會調用Hide,但我希望實現一些縮小效果。 – Samuel

相關問題