Динамическая матрица данных WPF - PullRequest
1 голос
/ 09 ноября 2010

Я хочу создать полностью динамическую матрицу данных.Например,

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

Кто-нибудь может мне помочь с кодом в XAML, который будет отображать данные вышеуказанным способом?Я имею в виду, что я не уверен, должен ли я использовать listview или datagrid или что-то еще для отображения данных. Так что, если кто-нибудь мог бы использовать некоторый пример кода и помочь мне с этим ..

Ответы [ 4 ]

4 голосов
/ 10 ноября 2010

Возможно, вы могли бы использовать мой ответ на этот Вопрос.Это подклассная DataGrid, используемая для отображения, редактирования и привязки данных 1D или 2D массивов и списков динамического размера.Его можно скачать с здесь .

Скажем, у вас есть этот двумерный массив строк как свойство

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

, затем вы можете привязать его к DataGrid2D, добавив ссылку на DataGrid2DLibrary.dll и добавив пространство имен

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

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

И вывод будет выглядеть так

alt text

1 голос
/ 08 сентября 2011

Вы можете попробовать эту статью на Привязка ListView к DataMatrix

enter image description here

1 голос
/ 10 ноября 2010

В этой статье в основном показано, как связать WPF ListView с DataMatrix (неопределенный источник данных с динамическими столбцами), где столбцы ListView нельзя определить до времени выполнения.

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

0 голосов
/ 10 ноября 2010

Да, похоже, вы могли бы очень хорошо использовать тег <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, доступную в WPF 4.0. Если вы не можете использовать 4.0 Framework, вы все равно можете использовать сетку данных в выпуске codeplex для .NET 3.5 SP1. См. WPF Toolkit

.

Вы также можете использовать ListView, да. WPF очень гибок, поэтому у вас есть много вариантов. Запрограммируйте теги Grid, как указано выше, или используйте сетку данных, listBox или listView с ItemSource, установленным для трех последних вариантов выбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...