【发布时间】:2021-04-18 15:10:53
【问题描述】:
我正在寻找将 Avalonia DataGrid.Items 与 ObservableCollection<SomeType[]> 集合绑定的方法。因此,行是SomeType[] 的数组,其中每个元素都是DataGrid 单元格的值。可能吗?现在它绑定类 Array 的字段而不是绑定元素,我知道,这是一种通常的方式。但是当我不知道它可以占用多少列时,我需要动态地执行它。就像 .NET 中的 DataTable.DefaultView 和 DataGrid。
在我的 XAML 中看起来像这样:
<DataGrid AutoGenerateColumns="True" Items="{Binding Rows}"/>
Rows 在我的视图模型中是 ObservableCollection<string[]> Rows { get; set; }。
【问题讨论】:
-
为什么不引入域对象?
-
@PeterCsala,我不确定我明白你的意思。你能改写一下吗?
-
我建议创建一个模型,将数组的每个字符串映射到
class或struct的属性。所以,你应该有ObservableCollection<DomainObject>而不是ObservableCollection<string[]> -
@PeterCsala,我尝试使用数组而不是域对象,因为属性(在我的情况下为数组项)计数是未知的,可以是任何一个。这取决于用户选择什么表以及它有多少列。它可以是一个表中的 3 或 15 或 1000 列。所以我在寻找动态改变网格列数的方法。
标签: c# xaml binding datagrid avaloniaui