Wpf-datagrid
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の他のプロパティとイベントのいくつかを試すことをお勧めします。