FlexGrid for WPF
アンバウンドモード

他のデータ視覚化コントロールと同様に、FlexGrid は連結モードサポートし、さまざまなデータソースのデータを挿入できます。以下のセクションでは、.NET 4.5.2および.NET 5 バージョンのアンバウンドのFlexGridについて説明します。

               

FlexGrid コントロールは、ObservableCollection や DataCollection などのさまざまなデータソースやコレクションと連携して機能を最大限に活用できるように設計されています。ただし、データソースには制限されず、非連結モードでも使用できます。

以下の画像は、セルインデックス表記によって生成される非連結グリッドを示します。

Unbound FlexGrid

非連結グリッドを作成するには、Add メソッドを使用して、グリッドに行と列を追加します。次のコードでは、グリッドにいくつかの行と列を追加し、対応する行と列に基づいてセルを指定するインデックス表記を使用してグリッドにデータを挿入します。

C#
コードのコピー
for (int i = 0; i < 20; i++)
    {
       grid.Columns.Add(new Column());
    }
for (int i = 0; i < 500; i++)
    {
       grid.Rows.Add(new Row());
     }

 // 非連結グリッドにインデックスを入力します
for (int r = 0; r < grid.Rows.Count; r++)
    {
         for (int c = 0; c < grid.Columns.Count; c++)
            {
                grid[r, c] = string.Format("[{0},{1}]", r, c);
             }
     }
                                                        
               

グリッドのインデックス表記は、行と列のインデックスでセルを指定します。行インデックスと列名、または行名と列インデックスに基づいてセルを指定することもできます。インデックス表記は、連結モードと非連結モードで機能します。連結モードでは、データは、データソース内の項目から取得され、データソース内の項目に適用されます。非連結モードでは、データはグリッドによって内部的に保存されます。

グリッドに表示される新しいインデックス表記には、0 行目の項目が含まれません。この表記では、インデックスがデータ項目のインデックスと一致し、列のカウントが表示されるプロパティの数と一致するため、インデックス化が容易です。この表記の唯一の欠点は、固定されたセルのコンテンツにアクセスするために新しいメソッドが必要なことです。新しいメソッドは、RowHeaders および ColumnHeadersという追加プロパティで構成されます。これらは GridPanel型のオブジェクトを返します。これは、独自の行/列セットを持つサブグリッドと考えることができます。たとえば、次のコードを使用して行ヘッダーをカスタマイズします。

C#
コードのコピー
// グリッドの行ヘッダーを取得します 
GridPanel rowHeader = grid.RowHeaders;

// グリッドに新しい固定列を追加します
rowHeader.Columns.Add(new Column());

// 行ヘッダーの幅およびコンテンツを設定します
for (int c = 0; c < rowHeader.Columns.Count; c++)
{
    // 行ヘッダーの幅を設定します
    rowHeader.Columns[c].Width = new GridLength(80);
    for (int r = 0; r < rowHeader.Rows.Count; r++)
    {
        // セルのコンテンツを設定します
        rowHeader[r, c] = string.Format("hdr {0},{1}", r, c);
    }
}
               

GridPanelクラスは、メインのグリッドと同様に Rows および Columns コレクションを公開し、同じインデックス表記をサポートします。行ヘッダーと列ヘッダーはカスタマイズでき、グリッドのコンテンツ領域(スクロール可能な部分)で使用したものと同じオブジェクトモデルや技術を使用してデータを挿入できます。

FlexGrid コントロールは、ObservableCollection や DataCollection などのさまざまなデータソースやコレクションと連携して機能を最大限に活用できるように設計されています。ただし、データソースには制限されず、非連結モードでも使用できます。

以下の画像は、セルインデックス表記によって生成される非連結グリッドを示します。

Unbound FlexGrid

非連結グリッドを作成するには、Add メソッドを使用して、グリッドに行と列を追加します。次のコードでは、グリッドにいくつかの行と列を追加し、対応する行と列に基づいてセルを指定するインデックス表記を使用してグリッドにデータを挿入します。

C#
コードのコピー
for (int i = 0; i < 20; i++)
{
    grid.Columns.Add(new GridColumn());
}
for (int i = 0; i < 500; i++)
{
    grid.Rows.Add(new GridRow());
}

// 非連結グリッドにインデックスを入力します
for (int r = 0; r < grid.Rows.Count; r++)
{
    for (int c = 0; c < grid.Columns.Count; c++)
    {
        grid[r, c] = string.Format("[{0},{1}]", r, c);
    }
               

グリッドのインデックス表記は、行と列のインデックスでセルを指定します。行インデックスと列名、または行名と列インデックスに基づいてセルを指定することもできます。インデックス表記は、連結モードと非連結モードで機能します。連結モードでは、データは、データソース内の項目から取得され、データソース内の項目に適用されます。非連結モードでは、データはグリッドによって内部的に保存されます。

グリッドに表示される新しいインデックス表記には、0 行目の項目が含まれません。この表記では、インデックスがデータ項目のインデックスと一致し、列のカウントが表示されるプロパティの数と一致するため、インデックス化が容易です。この表記の唯一の欠点は、固定されたセルのコンテンツにアクセスするために新しいメソッドが必要なことです。新しいメソッドは、RowHeadersおよび ColumnHeadersという追加プロパティで構成されます。これらは GridPanel型のオブジェクトを返します。これは、独自の行/列セットを持つサブグリッドと考えることができます。たとえば、次のコードを使用して行ヘッダーをカスタマイズします。

C#
コードのコピー
// グリッドの行ヘッダーを取得します 
GridPanel rowHeader = grid.RowHeaders;

// グリッドに新しい固定列を追加します
rowHeader.Columns.Add(new GridColumn());

// 行ヘッダーの幅およびコンテンツを設定します
for (int c = 0; c < rowHeader.Columns.Count; c++)
{
    for (int r = 0; r < rowHeader.Rows.Count; r++)
    {
        // セルのコンテンツを設定します
        rowHeader[r, c] = string.Format("hdr {0},{1}", r, c);
    }

GridPanelクラスは、メインのグリッドと同様に Rows および Columns コレクションを公開し、同じインデックス表記をサポートします。行ヘッダーと列ヘッダーはカスタマイズでき、グリッドのコンテンツ領域(スクロール可能な部分)で使用したものと同じオブジェクトモデルや技術を使用してデータを挿入できます。

関連トピック