最大化 WPF 不会更新宽度?

问题描述 投票:0回答:3

最大化窗口时,屏幕的

Width
属性似乎没有更新为完全最大化的宽度。如果我调整它的大小,一切都会正常,但最大化时就不行了。

我的代码如下:

private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
    UpdateColumns();
}

private void button1_Click(object sender, RoutedEventArgs e)
{
    UpdateColumns();
}

private void UpdateColumns()
{
    ColumnCount = Math.Round(Width/150);
    statusBarItemColumnCount.Content = ColumnCount;
    button1.Content = ColumnCount + " " + Width;
}

private void Window_StateChanged(object sender, EventArgs e)
{
    UpdateColumns();
}
wpf resize width maximize maximize-window
3个回答
15
投票

看看

ActualWidth
,而不是
Width


3
投票

尝试使用

ActualWidth
而不是
Width
,这应该可以解决问题


0
投票

将其放在任何需要宽度和高度的代码的顶部:

var RealWidth = Math.Max(宽度,实际宽度);

var RealHeight = Math.Max(宽度,实际高度);

然后使用 RealWidth 和 RealHeight 变量,因为它们总是正确的。

在构造期间和显示 ActualWidth 和 ActualHeight 之前将为零,因此将使用 Width 和 Height。

最大化后宽度和高度仍然是最大化前的值,但将使用实际宽度和实际高度,因为它们更大。

如果您遵循了所有这些并且想要一个优雅的解决方案,请创建两个属性。

   private double RealWidth
    {
        get { return Math.Max(Width, ActualWidth); }
    }
    private double RealHeight
    {
        get { return Math.Max(Height, ActualHeight); }
    }

然后您就可以在所有情况下使用 RealWidth 和 RealHeight。 如果您在类外需要这些属性,请将属性设置为内部或公共。

祝大家编程愉快!!!!

© www.soinside.com 2019 - 2024. All rights reserved.