xamGrid コントロールの代わりに xamDataGrid コントロールを使用してください。xamGrid は数年以内に廃止する予定のため、新しい機能の追加はありません。xamGrid のサポートおよび重要なバグ修正は廃止時まで提供されます。コードベースの xamDataGrid への移動に関する質問は、サポートまでお問い合わせください。
xamGrid のデータの注釈を使用すると、データ クラスで属性を適用できます。この注釈は、検証ルールの指定、データの表示の決定、クラス間の関係の設定などの操作で便利です。
クラスでデータの注釈の属性を使用する主な利点は、同じ規則を何回も設定する必要がないことです。これは、データ定義がセントラル ロケーションにあるからで、これにより複数の場所に同一の規則を設定することを排除します。
xamGrid コントロールはデータ クラスに適用されるデータの注釈を認識します。グリッドは、グリッドでデータを管理するために使用される DataManager
を変更することができるプロバイダー モデルを公開します。
AnnotationsDataManagerProvider
クラスは、System.ComponentModel.DataAnnotations
アセンブリ
に依存します。このプロバイダーを使用すると、データの注釈の完全な認識が自動的に有効となります。
以下のスクリーンショットは結果のプレビューです。以下のフィールドの属性が構成したデータ属性を表示します。
カテゴリ
カテゴリの指定した属性:
[DisplayAttribute(GroupName = "Grouped Category")]
名前
名前の指定した属性:
[DisplayAttribute(ShortName = "Short Name")]
単価
単価の指定した属性:
[DisplayFormat(DataFormatString = "{0:C}", ApplyFormatInEditMode = true)]
この手順を実行するには、以下のリソースが必要です。
このアセンブリをプロジェクトで参照します。
System.ComponentModel.DataAnnotations.dll
InfragisticsWPF4.v20.1.dll
InfragisticsWPF4.Controls.Grids.XamGrid.v20.1.dll
InfragisticsWPF4.Controls.Menus.XamMenu.v20.1.dll
InfragisticsWPF4.Data.AnnotationsDataManager.v20.1.dll
InfragisticsWPF4.DataManager.v20.1.dll
アプリケーションの XAML ファイルで名前空間を参照します。
xmlns:ig="http://schemas.infragistics.com/xaml"
xmlns:igData="http://schemas.infragistics.com/xaml"
デザイン タイムまたは ItemSource
を設定する前に AnnotationsDataManagerProvider
を設定します。そうでない場合プロパティは無視されます。
XAML の場合:
<ig:XamGrid.DataManagerProvider>
<ig:AnnotationsDataManagerProvider />
</ig:XamGrid.DataManagerProvider>
C# の場合:
this.xamGrid1.DataManagerProvider =
new AnnotationsDataManagerProvider();
this.xamGrid1.ItemsSource = DataUtil.Products;
Visual Basic の場合:
Me.xamGrid1.DataManagerProvider = New AnnotationsDataManagerProvider()
Me.xamGrid1.ItemsSource = DataUtil.Products
DisplayAttribute :
AutoGenerate – 列がフィールドのために生成されるかどうかを指定します。
ShortName - 列の HeaderText として使用されます。
GroupName – グループ化される時に GroupBy 列の HeaderText として使用されます。
Order – AutoGenerated 列が配置される順序を設定します。
DisplayFormatAttribute :
ApplyFormatInEditMode – 編集モードになった時に指定した FormatString を Text 列に適用します。たとえば、編集モードの時に、列値は通貨値として表示されますが、セルが編集モードになると、通貨文字列の書式を保持できます。
ConvertEmptyStringToNull – 編集モードを解除した時、値が空の文字列になる場合、文字列は null に設定されます。
DataFormatString – TextColumns に使用される FormatString
NullDisplayText – 値が null の場合に表示されるテキストを設定します。
EditableAttribute :
AllowEdit – フィールドが編集モードになれるかどうかを決定します。
AllowInitialValue – AddNewRow 行のフィールドで編集が許可されるかどうかを決定します。
TimestampAttribute :
設定されると、この属性に対して列は自動生成されません。
以下のコードは、 DisplayAttribute と DisplayFormat 属性の設定を示します。
C# の場合:
private string _category;
[DisplayAttribute(GroupName = "Grouped Category")]
public string Category
{
get { return _category; }
set
{
if (_category != value)
{
_category = value;
this.OnPropertyChanged("Category");
}
}
}
private string _name;
[DisplayAttribute(ShortName = "Short Name")]
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
this.OnPropertyChanged("Name");
}
}
}
private double _unitPrice;
[DisplayFormat(DataFormatString = "{0:C}", ApplyFormatInEditMode = true)]
public double UnitPrice
{
get { return _unitPrice; }
set
{
if (_unitPrice != value)
{
_unitPrice = value;
this.OnPropertyChanged("UnitPrice");
}
}
}
Visual Basic の場合:
Private _category As String
<DisplayAttribute(GroupName := "Grouped Category")> _
Public Property Category() As String
Get
Return _category
End Get
Set
If _category <> value Then
_category = value
Me.OnPropertyChanged("Category")
End If
End Set
End Property
Private _name As String
<DisplayAttribute(ShortName := "Short Name")> _
Public Property Name() As String
Get
Return _name
End Get
Set
If _name <> value Then
_name = value
Me.OnPropertyChanged("Name")
End If
End Set
End Property
Private _unitPrice As Double
<DisplayFormat(DataFormatString := "{0:C}", ApplyFormatInEditMode := True)> _
Public Property UnitPrice() As Double
Get
Return _unitPrice
End Get
Set
If _unitPrice <> value Then
_unitPrice = value
Me.OnPropertyChanged("UnitPrice")
End If
End Set
End Property
以下のトピックでは、このトピックに関連する追加情報を提供しています。