Ну, я провел небольшое исследование. Во-первых, этот код:
<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 (получается, что некоторые люди не считают, ничего к этим параметрам, на самом деле, высота/ширина не ноль).
Кстати, я забыл упомянуть: я показал все значения в
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