【问题标题】:GridView Table with static column names具有静态列名的 GridView 表
【发布时间】:2017-06-22 09:29:18
【问题描述】:

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

这是我的 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>

这是结果

【问题讨论】:

  • 你为什么要在GridView里面使用Grid,如果你在层次结构中使用GridView就在GridView之上,它就不行了。

标签: c# xaml gridview uwp


【解决方案1】:

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

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

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

正如@Ipsit Gaur 在评论中指出的那样,在这种情况下,一种选择是将带有 Header 的 Grid 放在 GridView 之前,因为 GridView 本身没有创建 Header 的概念。

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

Syncfusion 也有与a similar control called SfDataGrid类似的社区许可证

*我不是想宣传产品,我只是列出您可以用来解决问题的免费控件。

【讨论】:

  • 非常好的答案,谢谢。我以前不知道这一点。你知道如何将gridview上方的新网格的宽度绑定到gridview的宽度吗?
  • 知道了,我只是将网格和网格视图放在一个堆栈面板中。感谢您的帮助
  • 太好了,我正要为此制作一个样本,但在这种情况下,我可以跳过那项工作...感谢您的接受!
  • 我的意思是我不会怪你,如果你知道一个更好的方法,然后将它添加到堆栈面板,因为它的宽度不完全相同,出于某种原因..但无论如何谢谢你:P跨度>
猜你喜欢
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
  • 2020-09-04
  • 2020-05-30
  • 2015-10-29
  • 2016-09-27
  • 1970-01-01
相关资源
最近更新 更多