XamDataGrid ベーシックその 2 - カスタム色

0 ユーザーが評価
この投稿には確認済みの回答があります。 0 返信 | 1 サポーター

トップ 10 投稿者 
女性
投稿 22
IG Employee

元記事 (英語): Curtis Taylor - http://forums.infragistics.com/blogs/curtis_taylor/archive/2010/10/26/xamdatagrid-101-part-2.aspx

XamDataGrid ベーシックその 2 - カスタム色

 

今回は WPF アプリケーションを使って XamDataGrid のさまざまな Brush プロパティを紹介します。

Infragistics WPF 製品には複数のテーマが含まれます。テーマを使用すると、一貫性のある外観をコントロールに適用できます。カスタム テーマの作成や既存のテーマで特定のブラシをリソースで変更することもできます。

テーマを作成する代わりに、コントロールをカスタマイズできます。WPF で ControlTemplate を完全にカスタマイズできます。Infragistics のインストール フォルダーでインストールされる XAML 製品のための DefaultStyles と呼ばれるフォルダーがあります。このフォルダーはすべてのコントロールの ControlTemplate を含みます。

 

ただし、XamDataGrid のセル境界線または選択行の前景色のみを変更するために、すべてのテンプレートを割り当てる必要はありません。XamDataGrid のさまざまなブラシと各ブラシの ContentPresenter スタイルへのアクセスを提供します。

XamDataGrid の色を変更する主なスタイルにアクセスする方法については、添付プロジェクトをダウンロードしてください。添付プロジェクトは NetAdvantage for WPF 2010.3 バージョンを使用しています。ソフトウェアは、Visual Studio 2010 (または Expression Blend 4) で WPF 4 を使用します。アプリケーションは XamColorPicker のリストとサンプル データを使用した XamDataGrid を生成します。XamColorPicker を使用すると、XamDataGrid にリアルタイムで色を適用できます。色スタイルをテストするために便利です。

アプリケーションは XamDataGrid の部分にシンプルな SolidColorBrush に割り当てます。GradientBrush などの他のブラシは適用しません。色を割り当てられる場所は、他の WPF ブラシも使用できます。

アプリケーションのリストの最初の色グループは Foreground ブラシです。最初のブラシを見ると、ラベルがブラシが含まれるオブジェクト モデルを示しています。このブラシが CellValuePresenter スタイルの ForegroundStyle プロパティにあることを示します。ForegroundStyle と他の Foreground 色は ContentPresenter スタイルです。コンテンツがテキストの場合、Foreground、FontWeight、FontSize などのプロパティをここでカスタマイズできます。このスタイルを Field または FieldLayout のすべての Field に割り当てたときに、そのセルの Foreground プレゼンターが設定されます。

このプロジェクトは 7 - Model-View-ViewModel パターンを使用します。プロパティの動的更新をサポートするために ObeservableCollection と INotifyPropertyChanged を使用します。ViewModel が Visual Studio と Blend デザイナーで描画をサポートするためにバインドされます。MainView.xaml は色リストの宣言とバインディングを含み、カスタム CellValuePresenter、DataRecordCellArea、LabelPresenter、と HeaderLabelArea スタイルに割り当てられた XamDataGrid を含みます。すべてのカラー ピッカーで最近の色の共有をサポートするために、XamColorPicker を拡張する ColorPickerEx クラスがあります。

XamDataGrid は複数選択モデルをサポートします。個々のセルの選択、行の選択、非連続のセルの選択ができます。各セルとヘッダー ボタンは有効、アクティブ、選択、ホバー状態で別の外観をサポートします。たとえば、リストで次のブラシは ForegroundSelectedStyle の TextBlock.Foreground ブラシを設定します。これは複数セルを選択するときに使用されます。

ForegroundActiveStyle はアクテイブなセルの ContentPresenter のスタイルを設定します。編集可能なデータでは、編集可能なセルはアクテイブなセルです。

ForegroundHoverStyle は、マウスがホバーするセルの ContentPresenter のスタイルを設定します。このエフェクトはマウスをクリックしたときにアクティブ化するセルを表します。

レコードが選択されたときに ForegroundStyle と Background ブラシを変更する方法を説明します。Record.IsSelected プロパティが変更されたときに、DataTrigger を使用して、CellValuePresenter のスタイル変更をトリガーできます。ViewModel の色に関連する方法の詳細について、MainView.xaml でこの DataTrigger を参照します。

前景ブラシは ContentPresenter スタイルのコンテンツから取得する必要があります。背景ブラシは ContentPresenter スタイルとの制限がありません。ただの Brush スタイルです。CellValuePresenter の BackgroundHover ブラシはこれを示します。マウスがセルの上に移動したときに、このブラシはセルの Background に適用されます。

BackgroundActive スタイルはアクティブなセルに適用されます。アクティブなセルがテキスト エディターで、テキスト エディターの背景が透明でない場合、透明のエディターを囲んで BackgroundActive ブラシが表示されます。

BackgroundSelected スタイルは選択したセルに適用されます。Shift キーを押しながら複数のセルを選択でき、Ctrl キーを押しながら複数の非連続のセルを選択できます。

CellValuePresenter スタイルを使用すると、各セルの BorderBrush と BorderThickness プロパティも設定できます。このプロパティでセルに表計算の外観を適用できます。

一般的な表計算プログラムのように、選択したセルの境界線に別のブラシ色を使用できます。CellValuePresenter スタイルはそのための BorderSelectedBrush プロパティを含みます。

詳細なカスタマイズするために、DataRecordCellArea スタイルはセルのスタイルに影響するプロパティへのアクセスを提供します。サンプルはこのブラシのうち 2 つを使用します。

ヘッダー ラベルのブラシをスタイルするには、LabelPresenter スタイルと HeaderLabelArea スタイルがあります。HeaderLabelArea はヘッダー ボタンの外観をカスタマイズするために便利です。LabelPresenter スタイルはすべてのヘッダー ラベルの Foreground ブラシを設定します。

ヘッダー ラベルの背景ブラシのスタイルによって、3 つの状態があります。LabelPresenter の Background ブラシはすべてのヘッダー ラベルのデフォルト ブラシです。

LabelPresenter スタイルの LabelHighlight ブラシはマウスがラベルの上にあるときに使用されます。

ただし、ブラシが選択されているときに、このブラシをオーバーライドするには、コントロール テンプレートで使用されるブラシ LabelHighlight2 にアクセスする必要があります。このブラシは Theming で使用されるため、 ComponentResourceKey アクセサーによってアクセスできます。テーマを使用すると、このブラシはそのテーマによって使用されます。

色リストの最後のブラシは XamDataGrid で使用される Background ブラシです。

このサンプルのソース コードはここからダウンロードできます。

 


ページ 1 / 1 (1 項目) | RSS
Infragistics Japan
インフラジスティックス ジャパン