3 ответов:
См. этот вопрос: Как заполнить сетку WPF на основе 2-мерного массива
Вы можете использовать этот элемент управления называется
DataGrid2D(исходный код здесь ). Чтобы использовать его, просто добавьте ссылку на DataGrid2DLibrary.dll, добавьте это пространство именxmlns:dg2d="clr-namespace:DataGrid2DLibrary;assembly=DataGrid2DLibrary"А затем создайте DataGrid2D и свяжите его с вашим IList, 2D-массивом или 1D-массивом, как это
<dg2d:DataGrid2D Name="dataGrid2D" ItemsSource2D="{Binding Int2DList}"/>Пользователи смогут редактировать данные, а изменения, внесенные в
DataGrid, будут отражены в 2D массиве
Вы не можете привязать матрицу к
DataGrid. Однако, в зависимости от того, чего вы пытаетесь достичь, вы можете преобразовать его в массивclass.Каково содержание вашей матрицы? Почему бы тебе не попробовать что-нибудь подобное?
public class MyClass { public string A { get; set; } public string B { get; set; } public MyClass(string a, string b) { Debug.Assert(a != null); Debug.Assert(b != null); this.A = a; this.B = b; } }Затем создайте экземпляр следующего вида:
MyClass[] source = { new MyClass("A", "B"), new MyClass("C", "D") }; this.dataGrid.ItemsSource = source;В качестве альтернативы, если вы не можете изменить тип вашего источника, попробуйте использовать LINQ для его проецирования:
var source = (from i in Enumerable.Range(0, matrix.GetLength(0)) select new MyClass(matrix[i, 0], matrix[i, 1])).ToList(); this.dataGrid1.ItemsSource = source;
Самый простой способ-использовать сборку в WPF Datagrid и спроецировать массив в класс представления, который будет привязан.
Вы хотите, чтобы ваши пользователи могли добавлять строки? Если да, то привязка к массиву невозможна, так как вы не можете добавлять строки.
Если у вас есть любое количество столбцов, вы должны иметь возможность спроецировать свой массив в динамический объект и установить свойство AutoGenerateColumns datagrid в true. У ваших колонок есть названия?
Comments