最大化WPF不会更新宽度?

yacmzcpb  于 2023-10-22  发布在  其他
关注(0)|答案(3)|浏览(147)

当最大化窗口时,屏幕的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();
}
ercv8c1e

ercv8c1e1#

看一下ActualWidth,而不是Width

of1yzvn4

of1yzvn42#

尝试使用ActualWidth而不是Width,这应该可以修复它

dluptydi

dluptydi3#

把它放在任何需要width和height的代码的顶部:

var RealWidth = Math.Max(Width,ActualWidth);
var RealHeight = Math.Max(Width,ActualHeight);

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

  • 在构建期间和显示ActualWidth和ActualHeight之前,它们将为零,因此将使用Width和Height。*
  • 最大化后宽度和高度仍然是最大化前的值,但将使用ActualWidth和ActualHeight,因为它们更大。*

如果你遵循了所有这些,并且你想要一个优雅的解决方案,那么做两个属性。

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

然后,您可以在所有情况下使用RealWidth和RealHeight。如果在类外部需要属性,则将其设置为Internal或Public。
快乐编程大家!!!!!

相关问题