动态数据矩阵WPF

时间:2010-11-09 20:46:58

标签: c# wpf

我想创建一个完全动态的数据矩阵。例如,

       Column1 Column2 Column3....
id1      id11    id12     id13...
id2      id21    id22     id23...
.         .        .        .
.         .        .        .

有人可以帮我解决XAML中以上述方式显示数据的代码吗?我的意思是我不确定我是否应该使用listview或datagrid或其他任何东西来显示数据。所以如果有人可以使用一些示例代码并帮我解决它..

4 个答案:

答案 0 :(得分:4)

您可以使用我对this问题的回答。它是一个子类DataGrid,用于显示,编辑和数据处理1D或2D数组以及动态大小列表。它可以从here下载。

假设您将此2D字符串数组作为属性

public string[][] String2DArray { get; set; }

然后你可以通过添加对DataGrid2DLibrary.dll的引用并添加命名空间将它绑定到DataGrid2D

xmlns:dg2d="clr-namespace:DataGrid2DLibrary;assembly=DataGrid2DLibrary"

<dg2d:DataGrid2D Name="c_dataGrid2D" 
                 UseModifiedDataGridStyle="True" 
                 ItemsSource2D="{Binding String2DArray}"/>

输出将如下所示

alt text

答案 1 :(得分:1)

本文主要介绍如何将WPF ListView绑定到DataMatrix(具有动态列的未定义数据源),其中直到运行时才能确定ListView列。

http://www.codeproject.com/KB/WPF/WPF_DynamicListView.aspx

答案 2 :(得分:1)

您可以在Binding a ListView to a DataMatrix

上试用这篇文章

enter image description here

答案 3 :(得分:0)

是的,听起来你可以很好地利用<Grid>标签。所以,复制你的例子:

<Grid>  
<Grid.ColumnDefinitions>
  <ColumnDefinition Width="100" />
  <ColumnDefinition Width="100" />
  <ColumnDefinition Width="100" />
  <ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
  <RowDefinition Height="25" />
  <RowDefinition Height="25" />
  <RowDefinition Height="25" />
  <RowDefinition Height="25" />
  <RowDefinition Height="25" />
</Grid.RowDefinitions>

<TextBlock Grid.Column="1" Grid.Row="0">Column1</TextBlock>
<TextBlock Grid.Column="2" Grid.Row="0">Column2</TextBlock>
<TextBlock Grid.Column="3" Grid.Row="0">Column3</TextBlock>

<TextBlock Grid.Column="0" Grid.Row="1">id1</TextBlock>
<TextBlock Grid.Column="1" Grid.Row="1">id11</TextBlock>
<TextBlock Grid.Column="2" Grid.Row="1">id12</TextBlock>
<TextBlock Grid.Column="3" Grid.Row="1">id13</TextBlock>

<TextBlock Grid.Column="0" Grid.Row="2">id2</TextBlock>
<TextBlock Grid.Column="1" Grid.Row="2">id21</TextBlock>
<TextBlock Grid.Column="2" Grid.Row="2">id22</TextBlock>
<TextBlock Grid.Column="3" Grid.Row="2">id23</TextBlock>

<TextBlock Grid.Column="0" Grid.Row="3">.</TextBlock>
<TextBlock Grid.Column="1" Grid.Row="3">.</TextBlock>
<TextBlock Grid.Column="2" Grid.Row="3">.</TextBlock>
<TextBlock Grid.Column="3" Grid.Row="3">.</TextBlock>

<TextBlock Grid.Column="0" Grid.Row="4">.</TextBlock>
<TextBlock Grid.Column="1" Grid.Row="4">.</TextBlock>
<TextBlock Grid.Column="2" Grid.Row="4">.</TextBlock>
<TextBlock Grid.Column="3" Grid.Row="4">.</TextBlock>

</Grid>

您还可以使用WPF 4.0中提供的WPF数据网格。如果您不能使用4.0 Framework,那么您仍然可以在.NET 3.5 SP1的codeplex版本下使用datagrid。见WPF Toolkit

你也可以使用ListView,是的。 WPF非常灵活,因此您有很多选择。如上所述编程Grid标签,或使用datagrid或listBox或listView,并在后3个选项上设置ItemSource。