2

我为我的 WPF 应用程序创建了一个无边框窗口。它在侧面和角落完美地调整大小,当我将它拖到屏幕的左侧或右侧时,它完美地缩放以适合屏幕的一半。如果我使用按钮或其他控制事件来最大化窗口,它会完美运行。但是,当我将窗口拖到屏幕顶部时,实际窗口会最大化,但其中的网格不会。

我将它设置为在 sizeChanged 事件上调用一个方法,该方法设置网格相对于窗口的大小(它填充整个窗口,除了每个边缘上的 10 个像素)。起初,我认为 sizeChanged 事件没有触发,所以我创建了一个线程来检测 windowState 是否已最大化。在检测时,它会简单地运行该方法来确定网格的大小。该方法运行,但网格大小没有改变。只有这种最大化的方法是一个问题。

我该如何解决这个问题?

编辑:XAML

 <Window.Background>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
        <GradientStop Color="#FF868686" Offset="0" />
        <GradientStop Color="Black" Offset="1" />
    </LinearGradientBrush>
</Window.Background>
<Grid Background="{x:Null}" Name="baseGrid">
    <Grid Height="342" HorizontalAlignment="Stretch" Name="grid1" VerticalAlignment="Stretch" Width="718" Background="#46BA0000">
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="6,6,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="maximize" />
    </Grid>
</Grid>

我还在我的应用程序中使用了样式和主题,但是即使不涉及它们也会发生此问题,因此我没有将它们包含在 XAML 中

4

1 回答 1

1

您可以尝试的一种解决方案是将 VerticalAlignment="Stretch" 和 Horizo​​ntalAlignment="Stretch" 放在网格控件上

其他解决方案是使用 e.NewSize.Width 和 e.NewSize.Height 在 Window 的 SizeChanged 事件处理程序上计算网格高度和宽度。

于 2011-10-18T06:06:16.103 回答