Wpf-datagrid

提供:Dev Guides
移動先:案内検索

WPF-データグリッド

DataGridは、カスタマイズ可能なグリッドにデータを表示するコントロールです。 データのコレクションを行と列に表示する柔軟な方法を提供します。 DataGridクラスの階層的な継承は次のとおりです-

データグリッドの階層

DataGridの一般的に使用されるプロパティ

以下は、DataGridの最も一般的に使用されるプロパティです。

Sr.No. Properties & Description
1

AlternatingRowBackground

交互の行で使用する背景ブラシを取得または設定します。

2

AreRowDetailsFrozen

行の詳細を水平方向にスクロールできるかどうかを示す値を取得または設定します。

3

AutoGenerateColumns

列が自動的に作成されるかどうかを示す値を取得または設定します。

4

CanUserAddRows

ユーザーがDataGridに新しい行を追加できるかどうかを示す値を取得または設定します。

5

CanUserDeleteRows

ユーザーがDataGridから行を削除できるかどうかを示す値を取得または設定します。

6

CanUserReorderColumns

ユーザーが列ヘッダーをマウスでドラッグして列の表示順序を変更できるかどうかを示す値を取得または設定します。

7

CanUserResizeColumns

ユーザーがマウスを使用して列の幅を調整できるかどうかを示す値を取得または設定します。

8

CanUserResizeRows

ユーザーがマウスを使用して行の高さを調整できるかどうかを示す値を取得または設定します。

9

CanUserSortColumns

ユーザーが列ヘッダーをクリックして列をソートできるかどうかを示す値を取得または設定します。

10

ColumnHeaderHeight

列ヘッダー行の高さを取得または設定します。

11

ColumnHeaderStyle

DataGridのすべての列ヘッダーに適用されるスタイルを取得または設定します。

12

Columns

DataGridのすべての列を含むコレクションを取得します。

13

ColumnWidth

DataGridの列とヘッダーの標準の幅とサイズ設定モードを取得または設定します。

14

CurrentCell

フォーカスがあるセルを取得または設定します。

15

CurrentColumn

現在のセルを含む列を取得または設定します。

16

CurrentItem

現在のセルを含む行にバインドされたデータ項目を取得します。

17

FrozenColumnCount

非スクロール列の数を取得または設定します。

18

HorizontalScrollBarVisibility

DataGridでの水平スクロールバーの表示方法を示す値を取得または設定します。

19

IsReadOnly

ユーザーがDataGridの値を編集できるかどうかを示す値を取得または設定します。

20

RowBackground

行の背景のデフォルトブラシを取得または設定します。

21

RowHeight

すべての行の推奨される高さを取得または設定します。

22

SelectedCells

現在選択されているセルのリストを取得します。

DataGridの一般的に使用されるメソッド

以下に、DataGridで最も一般的に使用されるメソッドを示します。

Sr.No. Methods & Description
1

BeginEdit

BeginEditコマンドを呼び出します。これにより、現在のセルまたは行が編集モードになります。

2

CancelEdit

現在編集モードのセルまたは行に対してCancelEditCommandコマンドを呼び出します。

3

ClearDetailsVisibilityForItem

指定されたデータ項目を表すDataGridRowのDetailsVisibilityプロパティをクリアします。

4

ColumnFromDisplayIndex

指定されたインデックスにあるDataGridColumnを取得します。

5

CommitEdit

現在編集モードのセルまたは行に対してCommitEditCommandコマンドを呼び出します。

6

GenerateColumns

オブジェクトの指定されたプロパティの列を生成します。

7

GetDetailsVisibilityForItem

指定されたデータ項目を表すDataGridRowのDetailsVisibilityプロパティを取得します。

8

OnApplyTemplate

派生クラスでオーバーライドされると、アプリケーションコードまたは内部プロセスがApplyTemplateを呼び出すたびに呼び出されます。 (FrameworkElement.OnApplyTemplate()をオーバーライドします。)

9

ScrollIntoView

DataGridを垂直にスクロールして、指定されたデータ項目の行を表示します。

10

SelectAllCells

DataGrid内のすべてのセルを選択します。

11

SetDetailsVisibilityForItem

指定したオブジェクトを含むDataGridRowのDetailsVisibilityプロパティの値を設定します。

12

UnselectAllCells

DataGrid内のすべてのセルの選択を解除します。

DataGridの一般的に使用されるイベント

DataGridで最も一般的に使用されるイベントを以下に示します。

Sr.No. Events & Description
1

AddingNewItem

新しい項目がDataGridに追加される前に発生します。

2

AutoGeneratedColumns

すべての列の自動生成が完了したときに発生します。

3

AutoGeneratingColumn

個々の列が自動生成されるときに発生します。

4

BeginningEdit

行またはセルが編集モードに入る前に発生します。

5

CellEditEnding

セルの編集がコミットまたはキャンセルされる前に発生します。

6

ColumnDisplayIndexChanged

列の1つのDisplayIndexプロパティが変更されたときに発生します。

7

ColumnHeaderDragCompleted

ユーザーがマウスを使用してドラッグした後に列ヘッダーを離したときに発生します。

8

ColumnHeaderDragDelta

ユーザーが列ヘッダーをドラッグしている間にマウスの位置が変わるたびに発生します。

9

ColumnHeaderDragStarted

ユーザーがマウスを使用して列ヘッダーのドラッグを開始したときに発生します。

10

ColumnReordered

列が表示順序の新​​しい位置に移動したときに発生します。

11

ColumnReordering

列が表示順序の新​​しい位置に移動する前に発生します。

12

CopyingRowClipboardContent

デフォルトの行コンテンツが準備された後に発生します。

13

CurrentCellChanged

CurrentCellプロパティの値が変更されたときに発生します。

14

InitializingNewItem

新しいアイテムが作成されたときに発生します。

15

LoadingRow

DataGridRowがインスタンス化された後に発生するため、使用する前にカスタマイズできます。

16

LoadingRowDetails

新しい行詳細テンプレートが行に適用されると発生します。

17

PreparingCellForEdit

セルが編集モードに入ると発生します。

18

RowDetailsVisibilityChanged

行詳細要素の可視性が変更されたときに発生します。

19

RowEditEnding

行の編集がコミットまたはキャンセルされる前に発生します。

20

SelectedCellsChanged

SelectedCellsコレクションが変更されたときに発生します。

21

Sorting

列がソートされているときに発生します。

22

UnloadingRow

DataGridRowオブジェクトが再利用可能になったときに発生します。

23

UnloadingRowDetails

行詳細要素が再利用可能になったときに発生します。

  • WPFDataGridControl名で新しいWPFプロジェクトを作成しましょう。
  • ツールボックスからデータグリッドをドラッグします。
  • 次の例は、DataGridでデータを表示する方法を示しています。 以下に、一連のプロパティとイベントで2つのデータグリッドが作成されるXAMLコードを示します。
<Window x:Class = "WPFDataGridControl.MainWindow"
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:core = "clr-namespace:System;assembly = mscorlib"
   xmlns:local = "clr-namespace:WPFDataGridControl"
   Title = "MainWindow" Height = "350" Width = "525">

   <Window.Resources>
      <ObjectDataProvider x:Key = "myEnum" MethodName = "GetValues"
         ObjectType = "{x:Type core:Enum}">

         <ObjectDataProvider.MethodParameters>
            <x:TypeExtension Type = "local:Party"/>
         </ObjectDataProvider.MethodParameters>

      </ObjectDataProvider>
   </Window.Resources>

   <Grid>
      <DataGrid Name = "dataGrid" AlternatingRowBackground = "LightBlue"
         AlternationCount = "2" AutoGenerateColumns = "False">

         <DataGrid.Columns>
            <DataGridTextColumn Header = "Name" Binding = "{Binding Name}"/>
            <DataGridTextColumn Header = "Title" Binding = "{Binding Title}"/>
            <DataGridCheckBoxColumn Header = "ReElected?" Binding = "{Binding WasReElected}"/>
            <DataGridComboBoxColumn Header = "Party" SelectedItemBinding = "{Binding Affiliation}"
               ItemsSource = "{Binding Source = {StaticResource myEnum}}"/>
         </DataGrid.Columns>

      </DataGrid>
   </Grid>

</Window>

以下に、2つの異なるクラスのC#*での実装を示します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WPFDataGridControl {
  ///<summary>
     ///Interaction logic for MainWindow.xaml
  ///</summary>

   public partial class MainWindow : Window {

      public MainWindow() {
         InitializeComponent();
         dataGrid.ItemsSource = Employee.GetEmployees();
      }
   }

   public enum Party {
      Indepentent,
      Federalist,
      DemocratRepublican,
   }

   public class Employee : INotifyPropertyChanged {
      private string name;

      public string Name {
         get { return name; }
         set {
            name = value;
            RaiseProperChanged();
         }
      }

      private string title;

      public string Title {
         get { return title; }
         set {
            title = value;
            RaiseProperChanged();
         }
      }

      private bool wasReElected;

      public bool WasReElected {
         get { return wasReElected; }
         set {
            wasReElected = value;
            RaiseProperChanged();
         }
      }

      private Party affiliation;

      public Party Affiliation {
         get { return affiliation; }
         set {
            affiliation = value;
            RaiseProperChanged();
         }
      }

      public static ObservableCollection<Employee> GetEmployees() {
         var employees = new ObservableCollection<Employee>();

         employees.Add(new Employee() { Name = "Ali", Title = "Minister", WasReElected = true,
            Affiliation = Party.Indepentent });

         employees.Add(new Employee() { Name = "Ahmed", Title = "CM", WasReElected = false,
            Affiliation = Party.Federalist });

         employees.Add(new Employee() { Name = "Amjad", Title = "PM", WasReElected = true,
            Affiliation = Party.DemocratRepublican });

         employees.Add(new Employee() { Name = "Waqas", Title = "Minister",
            WasReElected = false, Affiliation = Party.Indepentent });

         employees.Add(new Employee() { Name = "Bilal", Title = "Minister",
            WasReElected = true, Affiliation = Party.Federalist });

         employees.Add(new Employee() { Name = "Waqar", Title = "Minister",
            WasReElected = false, Affiliation = Party.DemocratRepublican });

         return employees;
      }

      public event PropertyChangedEventHandler PropertyChanged;

      private void RaiseProperChanged([CallerMemberName] string caller = "") {

         if (PropertyChanged != null) {
            PropertyChanged(this, new PropertyChangedEventArgs(caller));
         }
      }

   }

}

上記のコードをコンパイルして実行すると、次のウィンドウが生成されます。

Datagridの出力

上記のサンプルコードを実行し、DataGridの他のプロパティとイベントのいくつかを試すことをお勧めします。