さて、私は少し研究を費やしました。まず、このコード:
<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.メジャー