[英]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.