繁体   English   中英

将具有固定值的列添加到ListView的GridView

[英]Add a column with fixed values to a ListView's GridView

我将ListView绑定到List(Of List(Of Integer))。 我可以这样指定列:

<ListView ItemsSource="{Binding ResultsByDenomination}">
<ListView.View>
    <GridView>
        <GridViewColumn Header="      "/>
        <GridViewColumn Header="Noord" DisplayMemberBinding="{Binding [0]}"/>
        <GridViewColumn Header="Oost" DisplayMemberBinding="{Binding [1]}"/>
        <GridViewColumn Header="Zuid" DisplayMemberBinding="{Binding [2]}"/>
        <GridViewColumn Header="West" DisplayMemberBinding="{Binding [3]}"/>
    </GridView>
</ListView.View>

这将ListOfList整齐地布置在正方形网格中。 但是,我想用固定值填充第一列。 除了将ListOfListOf Integer重建为ListOfList Of字符串并在其中添加具有固定值的第一列外,我该怎么做?

编辑:基本上我想添加RowHeaders。

如果行标题具有一种数据结构,行数据具有另一种数据结构,则只需将数据转换为新的数据结构即可,通过将它们组合在一起, ListView可以轻松使用它们。 由于您似乎喜欢“基本数据”数据结构,因此可以使用List<Tuple<string, List<int>>>

这是一个简单的例子。 首先,后面的代码模拟了ResultsByDenomination属性:

void Window_Loaded(object sender, RoutedEventArgs e)
{
    var rowHeaders = new List<string> { "One", "Two" };
    var rowData = new List<List<int>>
    {
        new List<int> { 1, 2, 3, 4 },
        new List<int> { 5, 6, 7, 8 },
    };
    var listViewData = rowHeaders.Zip(rowData, (a, b) => Tuple.Create(a, b)).ToList();
    DataContext = listViewData;
}

以及经过修改的XAML以支持新的数据结构:

<ListView ItemsSource="{Binding}">
    <ListView.View>
        <GridView>
            <GridViewColumn DisplayMemberBinding="{Binding Item1}"/>
            <GridViewColumn Header="Noord" DisplayMemberBinding="{Binding Item2[0]}"/>
            <GridViewColumn Header="Oost" DisplayMemberBinding="{Binding Item2[1]}"/>
            <GridViewColumn Header="Zuid" DisplayMemberBinding="{Binding Item2[2]}"/>
            <GridViewColumn Header="West" DisplayMemberBinding="{Binding Item2[3]}"/>
        </GridView>
    </ListView.View>
</ListView>

您也可以创建实用程序类,而不是使用具有更多描述性名称的Tuple

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM