2

Window 要素の Height プロパティを 0 に設定できないようです。説明はありますか?

このコードは機能しません。コード ビハインドで Height を 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

2 に答える 2

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た。別の OS を使用していると思われます。次に にパラメータを設定しResizeModeNoResize高さ 2 を取得しました。

を設定するResizeMode="CanResizeWithGrip"と、最大 17 ピクセルになり、Grip. したがって、パラメータが次の場合でも、システム自体が標準要素を挿入することがわかりますWindowStyle="None", AllowsTransparency="True"

パラメータも設定しようとしましShowInTaskbar = FalseShowActivated = False:

ところで、言及するのを忘れていました:

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

ここに画像の説明を入力

いくつかのリンク:

UIElement.Arrange

UIElement.メジャー

于 2013-07-22T19:02:02.787 に答える