使用具有行+列坐标的值集合动态填充数据网格

时间:2015-07-20 15:47:06

标签: c# wpf mvvm datagrid

我有一个可观察的集合,它有三个字段:

单元格值,列索引,行索引

(编辑:列表的每个对象都有这三个字段)

有没有办法可以使用列索引和行索引将此可观察集合绑定到数据网格以指定每个单元格的位置?可观察集合按列顺序排列(第一个对象是[第1行,第1列],第二个对象是[第1行,第2列]等),如果有帮助的话。

重要的是它遵循导致我出现问题的MVVM模式。

2 个答案:

答案 0 :(得分:0)

好好看看这个架构。假设我有对象Person有两个属性:FirstName和LastName。现在我有一个人的集合。

现在如果你有dataGrid,你的列将根据你的对象的属性填充(在这个例子中是firstName和lastName),对于我们集合中的每个项目,我们将有新的Row。 所以这是这个dataGrid的例证:

___ | FirstName | LastName

1    FirstItem   LastFirstItem
2    SecondItem  LastSecondItem

答案 1 :(得分:0)

您可能想查看UniformGrid。您可以绑定到RowsColumns以告诉它您的维度(视图模型的属性)。然后围绕ItemsControl进行构建,并通过ItemsSource输入您的数据。其余的是造型(你想要看起来像你的桌子)。以下XAML可能会为您提供一个起点。 MyList这里只是一个int的测试列表。

    <ItemsControl ItemsSource="{Binding MyList}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Rows="{Binding Rows}" Columns="{Binding Columns}"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>