gpt4 book ai didi

wpf - 具有动态定义的WPF GridView

转载 作者:行者123 更新时间:2023-12-03 18:37:37 26 4
gpt4 key购买 nike

我想使用ListView的GridView模式来显示程序将从外部源接收的一组数据。数据将由两个数组组成,其中一个是列名,另一个是用于填充控件的字符串值。

我没有看到如何创建合适的类以用作ListView中的Item。我知道填充项目的唯一方法是将其设置为具有表示列的属性的类,但是在运行时之前我不了解这些列。

我可以按照Create WPF ItemTemplate DYNAMICALLY at runtime中的描述动态创建一个ItemTemplate,但它仍然让我迷失在如何描述实际数据上。

非常感谢任何帮助。

最佳答案

您可以使用以下方法将给定第一个数组的GridViewColumns动态添加到GridView中:

private void AddColumns(GridView gv, string[] columnNames)
{
for (int i = 0; i < columnNames.Length; i++)
{
gv.Columns.Add(new GridViewColumn
{
Header = columnNames[i],
DisplayMemberBinding = new Binding(String.Format("[{0}]", i))
});
}
}


我假定包含值的第二个数组将是ROWS * COLUMNS长度。在这种情况下,您的项目可以是长度为COLUMNS的字符串数组。您可以使用Array.Copy或LINQ拆分阵列。此处演示了原理:

<Grid>
<Grid.Resources>
<x:Array x:Key="data" Type="{x:Type sys:String[]}">
<x:Array Type="{x:Type sys:String}">
<sys:String>a</sys:String>
<sys:String>b</sys:String>
<sys:String>c</sys:String>
</x:Array>
<x:Array Type="{x:Type sys:String}">
<sys:String>do</sys:String>
<sys:String>re</sys:String>
<sys:String>mi</sys:String>
</x:Array>
</x:Array>
</Grid.Resources>
<ListView ItemsSource="{StaticResource data}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=[0]}" Header="column1"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=[1]}" Header="column2"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=[2]}" Header="column3"/>
</GridView>
</ListView.View>
</ListView>
</Grid>

关于wpf - 具有动态定义的WPF GridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/356144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com