簡體   English   中英

WPF 網格行大小問題

[英]WPF Grid Row Sizing issue

在 WPF 項目中,我有一個 Grid 有 3 行。 在每一行中,我都有一個包含 TextBlock 的 StackPanel。

當所有 StackPanel 都可見時,我希望每個 StackPanel 分別占據 Grid 高度的 1/3。 但是當單個 StackPanel 折疊時,剩余的 2 個 StackPanel 分別占據 Grid 高度的 1/2。 而且,如果 2 個被折疊,那么剩下的一個會填滿整個 Grid。

下面是一些說明 UI 的示例代碼。

如果我將 3rd RowDefinition Height更改為"Auto"並設置panel3.Visibility = "Collapsed" ,那么就會發生正確的事情。 但是,如果我將它改回“可見”,那么它就不起作用了。

我看不到實現我想要的方法。 有人可以幫忙嗎?

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <StackPanel x:Name="panel1" Grid.Row="0" Visibility="Visible">
        <TextBlock x:Name="txt1" Text="FIRST ROW" />
    </StackPanel>
    <StackPanel x:Name="panel2" Grid.Row="1" Visibility="Visible">
        <TextBlock x:Name="txt2" Text="SECOND ROW" />
    </StackPanel>
    <StackPanel x:Name="panel3" Grid.Row="2" Visibility="Visible">
        <TextBlock x:Name="txt3" Text="THIRD ROW" />
    </StackPanel>
</Grid>

嘗試使用一列而不是網格的 UniformGrid:

<UniformGrid Columns="1">
    <StackPanel x:Name="panel1" Visibility="Visible">
        <TextBlock x:Name="txt1" Text="FIRST ROW" />
    </StackPanel>
    <StackPanel x:Name="panel2" Visibility="Visible">
        <TextBlock x:Name="txt2" Text="SECOND ROW" />
    </StackPanel>
    <StackPanel x:Name="panel3" Visibility="Visible">
        <TextBlock x:Name="txt3" Text="THIRD ROW" />
    </StackPanel>
</UniformGrid>

GridVisibilityCollapsed時,您可以將Grid.RowDefinition的高度設置為Auto ,如下所示:

row1.Height = GridLength.Auto;

GridVisibilityVisible時,您可以將Grid.RowDefinition的高度設置為1* ,如下所示:

row1.Height = new GridLength(1, GridUnitType.Star);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM