バージョン

このコントロールは廃止されたため、XamDataGrid コントロールに移行することをお勧めします。今後、新機能、バグ修正、サポートは提供されません。コードベースの XamDataGrid への移行に関する質問は、サポートまでお問い合わせください。

データの注釈

トピックの概要

目的

このトピックでは、 xamGrid™ でデータの注釈を使用してデータ クラスに属性を適用する方法を紹介します。

前提条件

以下の表は、このトピックの前提条件として必要なトピックを示しています。

トピック 目的

xamGrid コントロールによって、IEnumerable インターフェイスを実装する任意のオブジェクトにバインドすることができます。データへのバインドはシンプルで、コントロールの  ItemsSource プロパティを設定することだけを必要とします。

このトピックの内容

このトピックは以下のセクションからなります。

データの注釈の構成

概要

xamGrid のデータの注釈を使用すると、データ クラスで属性を適用できます。この注釈は、検証ルールの指定、データの表示の決定、クラス間の関係の設定などの操作で便利です。

クラスでデータの注釈の属性を使用する主な利点は、同じ規則を何回も設定する必要がないことです。これは、データ定義がセントラル ロケーションにあるからで、これにより複数の場所に同一の規則を設定することを排除します。

xamGrid コントロールはデータ クラスに適用されるデータの注釈を認識します。グリッドは、グリッドでデータを管理するために使用される DataManager を変更することができるプロバイダー モデルを公開します。

AnnotationsDataManagerProvider クラスは、System.ComponentModel.DataAnnotations アセンブリに依存します。このプロバイダーを使用すると、データの注釈の完全な認識が自動的に有効となります。

プレビュー

以下のスクリーンショットは結果のプレビューです。以下のフィールドの属性が構成したデータ属性を表示します。

  • カテゴリ

カテゴリの指定した属性:

[DisplayAttribute(GroupName = "Grouped Category")]

  • 名前

名前の指定した属性:

[DisplayAttribute(ShortName = "Short Name")]

  • 単価

単価の指定した属性:

[DisplayFormat(DataFormatString = "{0:C}", ApplyFormatInEditMode = true)]

xamGrid DataAnnotations 01.png

要件

この手順を実行するには、以下のリソースが必要です。

この手順を行うには、以下の NuGet パッケージ参照が必要です。

  • Infragistics.WPF.AnnotationsDataManager

  • Infragistics.WPF.Controls.Grids.XamGrid

  • Microsoft System.ComponentModel.DataAnnotations.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 列が配置される順序を設定します。

Note
注:

1 つのフィールドの順序を int.Max 以外に設定すると、その順序は順序が設定されているその他のフィールドに相対するため、最初に表示されることになります。また、順序を int.Max に設定すると、デフォルトの順序は指定した順序をオーバーライドします。

DisplayFormatAttribute :

  • ApplyFormatInEditMode – 編集モードになった時に指定した FormatString を Text 列に適用します。たとえば、編集モードの時に、列値は通貨値として表示されますが、セルが編集モードになると、通貨文字列の書式を保持できます。

  • ConvertEmptyStringToNull – 編集モードを解除した時、値が空の文字列になる場合、文字列は null に設定されます。

  • DataFormatString – TextColumns に使用される FormatString

  • NullDisplayText – 値が null の場合に表示されるテキストを設定します。

EditableAttribute :

  • AllowEdit – フィールドが編集モードになれるかどうかを決定します。

  • AllowInitialValue – AddNewRow 行のフィールドで編集が許可されるかどうかを決定します。

TimestampAttribute :

  • 設定されると、この属性に対して列は自動生成されません。

データ クラスの属性の適用

以下のコードは、 DisplayAttributeDisplayFormat 属性の設定を示します。

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

関連コンテンツ

トピック

以下のトピックでは、このトピックに関連する追加情報を提供しています。

トピック 目的

このセクションは、 xamGrid コントロールの重要な概念および機能を効果的に使用するためのタスク ベースの情報について説明します。