タイトルが示すように、マルチインデックス プロパティを持つオブジェクトのコンテンツを 2D グリッドのような UI 要素にレンダリングする方法についてアドバイスを求めています。
レンダリングしようとしているデータは、スパース マトリックス ADT ( http://www.blackbeltcoder.com/Articles/algorithms/creating-a-sparseを参照) に従って、n 行 m 列で構成されるテーブル グリッドのようなデータ構造で表されます。 -matrix-in-net )。各 [row, column] ペアはセル値を返します。テーブル グリッド構造を操作する場合、tableGrid[0, 0] (最初の行と列の要素を返す) などのインデクサーを使用して、行 '0' と列 '0' で値を設定および取得できます。簡単にするために、返される要素は、行と列の数がわかっている特定のセルの値を含むオブジェクト型です。
記事http://geekswithblogs.net/btudor/archive/2009/05/31/132526.aspxに基づいて、これまでテキストボックスを単一の [行、列] ペアの値にバインドできました (以下に示す例では、[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);
}
}
問題は、テーブル グリッド (つまり、10 x 10 マトリックス) の各 [行、列] で見つかったすべての値を表すことができる 2D グリッドを作成する方法です。つまり、インデクサーを介して前後に表示および更新します。ビューモデルのプロパティ。
何かご意見は?
〜E.