パッケージは unvell.ReoGrid.One.Wpf、名前空間は unvell.ReoGrid.Wpf です。
描画は DrawingContext / FormattedText(WpfGraphics)で行います。
導入とサンプルは WPF で始める を参照してください。
構造
ReoGridControl は Panel の派生です。グリッド本体は OnRender で描画され、
スクロールバー・セルエディタ・ドロップダウンはその上に子要素として載ります。
座標系
WPF の DIP は 96 DPI 基準であり、コアの論理ピクセルと一致します。そのため
WinForms 版にある DpiScale 相当の変換は不要で、モニターごとの DPI は
フレームワークが処理します。
罫線は EdgeMode.Aliased と SnapsToDevicePixels によってくっきり描かれます。
ブラシ・ペン・書体は凍結してキャッシュされます。
メンバー
WinForms 版と同名・同義です。
| 分類 | メンバー |
|---|---|
| ワークブック | Workbook ActiveWorksheet SetWorksheet LoadWorkbook NewWorkbook LoadJson |
| 選択 | Selection ActiveCell SelectionChanged |
| 編集 | BeginEdit CancelEdit IsEditing SetActiveCellInput ほか |
| 履歴 | Undo Redo CanUndo CanRedo HistoryChanged |
| 表示 | Zoom ZoomChanged SetFreeze |
| イベント | WorkbookChanged ActiveSheetChanged ContextMenuRequested CellButtonClicked |
選択範囲への一括操作も同じ名前で揃っています (選択とアクティブセル)。
印刷
control.Print();
control.Print(new PrintSettings { /* ... */ });
内部で DocumentPaginator を構築し、印刷ダイアログへ渡します。
WinForms 版が PrintDocument を返すのに対し、WPF 版は印刷まで行うメソッドです。
任意の DrawingContext へ描く
control.RenderTo(drawingContext, width, height, pixelsPerDip);
日本語入力(IME)
IMM32 コンテキストを再関連付けして WM_IME_* を受け取る実装になっており、
WinForms 版と同等です。非編集状態のセルで日本語入力を開始すると、その場でエディタが開きます。
WinForms 版との差分
| WinForms | WPF | |
|---|---|---|
| 基底クラス | Control | Panel |
| DPI 変換 | DpiScale を適用 | 不要(DIP=論理ピクセル) |
| ズーム実装 | RenderScale に乗算 | ScaleTransform |
| 印刷 | CreatePrintDocument() を返す | Print() が実行する |
| 描画先 | System.Drawing.Graphics | DrawingContext |