拉伸孩子网格

时间:2017-08-23 08:59:49

标签: wpf xaml

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <StatusBar Height="25" Grid.Row="5">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <StatusBarItem Content="Text" FontSize="10" Height="20" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0"/>
            <StatusBarItem Content="Text" FontSize="10" Height="20" VerticalAlignment="Center" HorizontalAlignment="Right" Grid.Column="1"/>
            <ProgressBar Width="100" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="2"/>
        </Grid>
    </StatusBar>
</Grid>

请帮助初学者。

我想创建一个StatusBar并将其分为3个元素。我想对齐左侧的第一个元素。第二个是正确的。第三个在中心。 在第一个和第二个元素中,我想找到文本。在第三个我想找到StatusBar。

为什么StatusBar中的网格不想伸展到StatusBar并格式化元素? 我做错了什么?

对不起,如果有错误。

1 个答案:

答案 0 :(得分:3)

因为StatusBar的默认ItemsPanel不会告诉我们我们有多少空间,所以我们需要为它提供一个空间(如grid)。

可能的解决方案如下(直接使用网格作为ItemsPanel):

    <StatusBar Height="25" Grid.Row="5">
        <StatusBar.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                </Grid>
            </ItemsPanelTemplate>
        </StatusBar.ItemsPanel>

        <StatusBarItem Content="Text" FontSize="10" Height="20" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0"/>
        <StatusBarItem Content="Text" FontSize="10" Height="20" VerticalAlignment="Center" HorizontalAlignment="Right" Grid.Column="1"/>
        <ProgressBar Width="100" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="2"/>
    </StatusBar>