带有静态列名的GridView表

时间:2017-06-22 09:29:18

标签: c# xaml gridview uwp

所以我想用静态列名创建一个像GridView控件这样的表。我可以动态地添加我的网格列或行,没有问题通过ItemTemplate。现在的问题是,当我尝试向我的GridView添加一个带有columndefinitions的静态网格时,我看不到它。你知道为什么吗?

这是我的xaml代码:(未标记的网格被标记)

<GridView Margin="10" Name="GridViewAllgemein" HorizontalAlignment="Center" VerticalAlignment="Center" ItemsSource="{x:Bind ausstattung}" BorderBrush="Black" IsTapEnabled="True" IsItemClickEnabled="True">
        <Grid Background="Red" Height="50"> //cannot see this grid
            <Grid.ColumnDefinitions> //cannot see this grid
                <ColumnDefinition Width="200"/> //cannot see this grid
                <ColumnDefinition Width="200"/> //cannot see this grid
                <ColumnDefinition Width="200"/> //cannot see this grid
                <ColumnDefinition Width="200"/> //cannot see this grid
            </Grid.ColumnDefinitions> //cannot see this grid
            <TextBlock Grid.Column="0" Text="Test"></TextBlock> //cannot see this grid
        </Grid> //cannot see this grid
        <GridView.ItemTemplate>
            <DataTemplate x:DataType="data:Ausstattung">
                <Grid Background="{ThemeResource SystemControlBackgroundAccentBrush}" Height="40" Margin="1">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="200"/>
                        <ColumnDefinition Width="200"/>
                        <ColumnDefinition Width="200"/>
                        <ColumnDefinition Width="200"/>
                    </Grid.ColumnDefinitions>


                    <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Foreground="White" FontSize="14" Text="{x:Bind Beschreibung}" TextWrapping="Wrap"/>
                    <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center"  Grid.Column="1" Foreground="White" FontSize="14" Text="{x:Bind Ausgabedatum}" TextWrapping="Wrap"/>
                    <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center"  Grid.Column="2" Foreground="White" FontSize="14" Text="{x:Bind Rückgabedatum}" TextWrapping="Wrap"/>
                    <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center"  Grid.Column="3" Foreground="White" FontSize="14" Text="{x:Bind Anzahl}" TextWrapping="Wrap"/>
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

这是结果here

1 个答案:

答案 0 :(得分:3)

  

现在的问题是,当我尝试添加静态网格时   我的GridView的columndefinitions我看不到它。你知道为什么吗?

这是因为GridView是一个ItemsControl,它不能直接包含子元素。

  

它必须在Items集合中有项目才能显示   屏幕上的任何内容。要填充视图,您可以添加项目   直接到Items集合,或将ItemsSource属性设置为a   数据源。见here

正如@Ipsit Gaur在评论中指出的那样,在这种情况下,一个选项是在GridView之前将Grid与Header放在一起,因为GridView本身没有创建Header的语句。

顺便说一下。 telerik开源其UWP控件,在某些情况下,您可以免费使用它。他们有一个Grid control with a built in functionality for this

Syncfusion还拥有与a similar control called SfDataGrid

类似的社区许可

*我不打算宣传产品,我只列出了您可能用来解决问题的免费控件。