我将ListView绑定到List(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。
答案 0 :(得分:1)
如果行标题有一个数据结构,行数据有另一个数据结构,只需将数据转换为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
。