1

正如标题所说,我正在寻找一些关于如何将具有多索引属性的对象的内容渲染到类似 2d 网格的 UI 元素的建议。

我试图呈现的数据体现在一个由 n 行和 m 列组成的表格网格数据结构中,遵循稀疏矩阵 ADT(参见http://www.blackbeltcoder.com/Articles/algorithms/creating-a-sparse - 网络中的矩阵)。每个 [row, column] 对返回一个单元格值。在使用表格网格结构时,我可以使用诸如 tableGrid[0, 0] 的索引器(它返回第一行和第一列的元素)来设置和获取“0”行和“0”列的值。为简单起见,返回的元素是对象类型,其中包含特定单元格的值,其中行数和列数是已知的。

根据文章http://geekswithblogs.net/btudor/archive/2009/05/31/132526.aspx,到目前为止,我已经能够将文本框绑定到单个 [row, column] 对的值(在下面显示的示例中,值为 [1,1]),从而允许 UI 来回更新表格网格。

XAML:

<Grid>
    <TextBox Height="23" Name="textBlock5" Text="{Binding [1\,1], Mode=TwoWay />
</Grid>

视图模型:

public class TableGridViewModel : INotifyPropertyChanged
{
    private readonly TableGrid _grid;        

    public object this[int row, int col]
    {
        get { return _grid[row, col]; }
        set
        {
            _grid[row, col] = value;
            OnPropertyChanged(new PropertyChangedEventArgs(string.Empty));
        }
    }

    public TableGridViewModel()
    {
        _grid = new TableGrid();

        for (int i = 0; i < 10; i++)
            for (int j = 0; j < 10; j++)
                _grid[i, j] = i * j;
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, e);
    }
}

问题是如何创建一个 2D 网格,它可以表示在表格网格中每个 [行、列] 找到的所有值(即 10 x 10 矩阵),这意味着通过索引器来回显示和更新它视图模型的属性。

有什么想法吗?

~E。

4

0 回答 0