FlexGrid for WPF
固定行と固定列

多くの列を含むテーブルを表示する場合は、最初のいくつかの行または列を "固定" すると、グリッドをスクロールした際に、それらの行または列が表示されたままになるので便利です。

これは、Rows.Frozen および Columns.Frozen プロパティを設定して簡単に実現できます。デフォルトでは、C1FlexGrid は、グリッドの固定領域とスクロール可能領域の間に黒い線が表示されます(Excel と同様)。FrozenLinesBrush プロパティを使用して、この分割線を削除したり、色を変更することができます。

次のコードは、Excel と同じような "FreezePanes" コマンドを実装する方法を示します。

コードのコピー
// 行・列を固定するか固定を解除をします。
void _chkFreezePanes_Click(object sender, RoutedEventArgs e)
{
  if (_chkFreezePanes.IsChecked.Value)
  {
     int frozenRowCount = _flexGroup.Selection.Row;
     if (frozenRowCount == -1)
         frozenRowCount = 1;
     _flexGroup.Rows.Frozen = Math.Min(frozenRowCount, 5); 
     int FrozenColCount = _flexGroup.Selection.Column;
     if (FrozenColCount <= 0)
         FrozenColCount = 1;
     _flexGroup.Columns.Frozen = Math.Min(FrozenColCount, 3);
  }
  else
  {
    _flexGroup.Rows.Frozen = 0;
    _flexGroup.Columns.Frozen = 0;
  }
}
コードのコピー
// 行・列を固定するか固定を解除をします。

void _chkFreezePanes_Click(object sender, RoutedEventArgs e)

{

  if (_chkFreezePanes.IsChecked.Value)

  {

     int frozenRowCount = _flexGroup.Selection.Row;

     if (frozenRowCount == -1)

         frozenRowCount = 1;

     _flexGroup.Rows.Frozen = Math.Min(frozenRowCount, 5);

 

     int FrozenColCount = _flexGroup.Selection.Column; 

     if (FrozenColCount <= 0)

         FrozenColCount = 1;

     _flexGroup.Columns.Frozen = Math.Min(FrozenColCount, 3);

  }

  else

  {

    _flexGroup.Rows.Frozen = 0;

    _flexGroup.Columns.Frozen = 0;

  }

}

ユーザーが _chkFreezePanes チェックボックスをオンにすると、イベントハンドラは Rows.Frozen および Columns.Frozen プロパティを設定して、現在の選択範囲の上側と左側に行と列が固定され、常に表示されるようにします。次の図に、この効果を示します。

関連トピック