さて、私は少し研究を費やしました。まず、このコード:
<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 を使用していると思われます。次に にパラメータを設定しResizeMode
、NoResize
高さ 2 を取得しました。
を設定するResizeMode="CanResizeWithGrip"
と、最大 17 ピクセルになり、Grip
. したがって、パラメータが次の場合でも、システム自体が標準要素を挿入することがわかりますWindowStyle="None", AllowsTransparency="True"
。
パラメータも設定しようとしましShowInTaskbar = False
たShowActivated = 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.メジャー