UWP XAML GridView填充垂直空间

时间:2016-10-28 18:20:20

标签: xaml uwp uwp-xaml

我有一个包含2列的页面 每列都包含在stackpanels中的控件 stackpanel包含在寄宿生中。

边界 StackPanel中 ..... 网格视图 / StackPanel中 /边界

我希望边框填充垂直高度,而不将minheight设置为像素值。

意思是我不希望寄宿生与gridview一起成长和缩小,它应该保持相同的大小,填充colunm并尊重它的边缘。

<StackPanel x:Name="RightColumn"
        Grid.Column="1" 
        Margin="10,20,20,20">

    <TextBlock FontWeight="Bold" Text="Tags" />

    <Border BorderBrush="{StaticResource DGreen}"
        MinHeight="500"
            BorderThickness="2" 
            Padding="10">
        <StackPanel >

            <TextBox Width="120"
                HorizontalAlignment="Left"
                KeyDown="{x:Bind ViewModel.AddNewTag}"
                PlaceholderText="Add New Tag"
                Text="{x:Bind ViewModel.NewTagToAdd, Mode=TwoWay}" />

            <TextBlock Margin="0,10,0,0"
                FontWeight="Bold"
                Text="Add Tags from this list" />

            <GridView Margin="0,10,0,0" MaxHeight="416" VerticalAlignment="Stretch"
                ItemsSource="{x:Bind ViewModel.SD.TagsAvailableForSelecting}"
                SelectionChanged="{x:Bind ViewModel.AddTagToSelectedTags, Mode=OneWay}">

                <GridView.ItemTemplate>
                    <DataTemplate x:DataType="dat:TagDTO">
                        <Border Width="90" Background="{StaticResource DGreen}">
                            <TextBlock Margin="3"
                                Foreground="{StaticResource ContrastColorBrush}"
                                Text="{x:Bind TagName}" />
                        </Border>
                    </DataTemplate>
                </GridView.ItemTemplate>

            </GridView>

        </StackPanel>

    </Border>

</StackPanel>

1 个答案:

答案 0 :(得分:2)

将您的第一个StackPanel更改为Grid。这样它就可以填满整个可用空间。 TextBox将转到设置为Auto的第一行,第二行Border应转到设置为*的第二行。

以下是您示例中的模型。

<Grid x:Name="RightColumn"
        Grid.Column="1" 
        Margin="10,20,20,20">

        <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <TextBlock FontWeight="Bold" Text="Tags" Grid.Row="0" />

    <Border BorderBrush="{StaticResource DGreen}" Grid.Row="1"
            MinHeight="500" BorderThickness="2" Padding="10">
        <StackPanel>
            <TextBox Width="120"
                HorizontalAlignment="Left"
                KeyDown="{x:Bind ViewModel.AddNewTag}"
                PlaceholderText="Add New Tag"
                Text="{x:Bind ViewModel.NewTagToAdd, Mode=TwoWay}" />
            <TextBlock Margin="0,10,0,0"
                FontWeight="Bold"
                Text="Add Tags from this list" />
            <GridView Margin="0,10,0,0" MaxHeight="416" VerticalAlignment="Stretch"
                ItemsSource="{x:Bind ViewModel.SD.TagsAvailableForSelecting}"
                SelectionChanged="{x:Bind ViewModel.AddTagToSelectedTags, Mode=OneWay}">
                <GridView.ItemTemplate>
                    <DataTemplate x:DataType="dat:TagDTO">
                        <Border Width="90" Background="{StaticResource DGreen}">
                            <TextBlock Margin="3"
                                Foreground="{StaticResource ContrastColorBrush}"
                                Text="{x:Bind TagName}" />
                        </Border>
                    </DataTemplate>
                </GridView.ItemTemplate>
            </GridView>
        </StackPanel>
    </Border>
</Grid>