2
空白WpfApplicationでスタートし、クラスApp
でこれを貼り付けます。(WPF)ウィンドウの幅が0.0ピクセルでないのはなぜですか?
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var w = new Window
{
ResizeMode = ResizeMode.NoResize,
WindowStyle = WindowStyle.None,
Background = Brushes.Transparent,
};
Console.WriteLine(w.Width);
w.Width = 0.0;
//w.MinWidth = 0.0; // makes no difference
Console.WriteLine(w.Width);
w.Show();
Console.WriteLine(w.Width);
}
をこれはちょうど新しい空のウィンドウ(黒線)を作成します。
なぜ、Show
ウィンドウが「Width
」から「2
」に増加するのですか?
出力:
NaN
0
2
おそらくいくつかのWindows関連の制限が、私は、これは、例えばに記載見つけることができますmsdn?
これはAvalonDockのウィンドウ配置計算のバグの原因です。「2
」をハードコードできるかどうかは疑問でした。
幅を制限するには 'w.MaxWidth'を使用してください(' MinWidth'ではなく)。 – Sinatr
@Sinatrは 'w.MaxWidth = 0.0;'を追加することで違いはありません。さらに、ウィンドウは後で広がることができるはずですが、最初の配置計算はこの_wrongまたはweird_初期の 'Width'値に依存しています。 – jan
非常に複雑で、非常に多数のバグ修正の対象です。しかし、それは[ここで]起こる(http://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/Window.cs,aff832999c41291b)。 –