WPF/DataGrid/Tips
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(WPF/DataGrid/Tips);
*目次 [#u0c0a459]
#contents
*参考情報 [#w7e00b42]
-[[WPF/DataGrid]]
*Tips [#ccab84b4]
**ヘッダークリックでソートする [#ra87fc8c]
-[[Making a DataGrid Column Header sortable in WPF using ...
**DataGridRow、DataGridCellを検索する [#o3493e81]
-[[Techie things: Get WPF DataGrid row and cell:http://te...
**列を動的に生成する [#z7f7562c]
-[[c# - How can I programatically create a WPF Toolkit Da...
-[[wpf - dynamic datatemplate with valueconverter - Stack...
**シングルクリックで編集する [#kc0801ee]
***基本 [#ua6f39ad]
-[[Windows Presentation Foundation (WPF) - Single-Click E...
-DataGridCellにPreviewMouseLeftButtonDownをセットし、事前...
-Application全体でDataGridに共通のスタイルを設定している...
***すべてのDataGridでシングルクリック編集を可能にする [#l...
-[[c# - Single click edit in WPF DataGrid - Stack Overflo...
-ResourceDictionaryを使う。新規→リソースディクショナリでD...
#pre{{
<ResourceDictionary
x:Class="ControlDemo.DataGridDemo.SingleClick.DataGri...
x:ClassModifier="public"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/p...
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="DataGrid">
<!-- Your DataGrid style definition goes here -->
<Setter Property="CellStyle">
<Setter.Value>
<Style TargetType="DataGridCell">
<EventSetter Event="PreviewMouseLeftB...
</Style>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
}}
-DataGridStyles.xaml.csを追加し、ここにDataGridCell_Previ...
#pre{{
namespace ControlDemo.DataGridDemo.SingleClick
{
partial class DataGridStyles : ResourceDictionary
{
//
// SINGLE CLICK EDITING
//
private void DataGridCell_PreviewMouseLeftButtonD...
{
DataGridCell cell = sender as DataGridCell;
if (cell != null && !cell.IsEditing && !cell....
{
if (!cell.IsFocused)
{
cell.Focus();
}
DataGrid dataGrid = FindVisualParent<Data...
if (dataGrid != null)
{
if (dataGrid.SelectionUnit != DataGri...
{
if (!cell.IsSelected)
cell.IsSelected = true;
}
else
{
DataGridRow row = FindVisualParen...
if (row != null && !row.IsSelected)
{
row.IsSelected = true;
}
}
}
}
}
static T FindVisualParent<T>(UIElement element) w...
{
UIElement parent = element;
while (parent != null)
{
T correctlyTyped = parent as T;
if (correctlyTyped != null)
{
return correctlyTyped;
}
parent = VisualTreeHelper.GetParent(paren...
}
return null;
}
}
}
}}
***DataGridTemplateColumnで内部のコントロールにフォーカス...
-DataGridTextColumnなどでは上記シングルクリック対応により...
-これを解消するには、DataGridTemplateColumnを継承したクラ...
#pre{{
public class CustomDataGridTemplateColumn :DataGridTe...
{
protected override object PrepareCellForEdit(Fram...
...
{
editingElement.MoveFocus(new TraversalRequest...
return base.PrepareCellForEdit(editingElement...
}
}
}}
-xamlでDataGridTemplateColumn→CustomDataGridTemplateColum...
**行をDrag and Dropで入れ替える。セルベースで選択する [#m...
-[[Common DataGrid Add-Ons:http://code.msdn.microsoft.com...
**三つの状態をもったソート [#o9daccd7]
-[[WPF DataGrid: Tri-state Sorting sample - Vincent Sibal...
終了行:
&tag(WPF/DataGrid/Tips);
*目次 [#u0c0a459]
#contents
*参考情報 [#w7e00b42]
-[[WPF/DataGrid]]
*Tips [#ccab84b4]
**ヘッダークリックでソートする [#ra87fc8c]
-[[Making a DataGrid Column Header sortable in WPF using ...
**DataGridRow、DataGridCellを検索する [#o3493e81]
-[[Techie things: Get WPF DataGrid row and cell:http://te...
**列を動的に生成する [#z7f7562c]
-[[c# - How can I programatically create a WPF Toolkit Da...
-[[wpf - dynamic datatemplate with valueconverter - Stack...
**シングルクリックで編集する [#kc0801ee]
***基本 [#ua6f39ad]
-[[Windows Presentation Foundation (WPF) - Single-Click E...
-DataGridCellにPreviewMouseLeftButtonDownをセットし、事前...
-Application全体でDataGridに共通のスタイルを設定している...
***すべてのDataGridでシングルクリック編集を可能にする [#l...
-[[c# - Single click edit in WPF DataGrid - Stack Overflo...
-ResourceDictionaryを使う。新規→リソースディクショナリでD...
#pre{{
<ResourceDictionary
x:Class="ControlDemo.DataGridDemo.SingleClick.DataGri...
x:ClassModifier="public"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/p...
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="DataGrid">
<!-- Your DataGrid style definition goes here -->
<Setter Property="CellStyle">
<Setter.Value>
<Style TargetType="DataGridCell">
<EventSetter Event="PreviewMouseLeftB...
</Style>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
}}
-DataGridStyles.xaml.csを追加し、ここにDataGridCell_Previ...
#pre{{
namespace ControlDemo.DataGridDemo.SingleClick
{
partial class DataGridStyles : ResourceDictionary
{
//
// SINGLE CLICK EDITING
//
private void DataGridCell_PreviewMouseLeftButtonD...
{
DataGridCell cell = sender as DataGridCell;
if (cell != null && !cell.IsEditing && !cell....
{
if (!cell.IsFocused)
{
cell.Focus();
}
DataGrid dataGrid = FindVisualParent<Data...
if (dataGrid != null)
{
if (dataGrid.SelectionUnit != DataGri...
{
if (!cell.IsSelected)
cell.IsSelected = true;
}
else
{
DataGridRow row = FindVisualParen...
if (row != null && !row.IsSelected)
{
row.IsSelected = true;
}
}
}
}
}
static T FindVisualParent<T>(UIElement element) w...
{
UIElement parent = element;
while (parent != null)
{
T correctlyTyped = parent as T;
if (correctlyTyped != null)
{
return correctlyTyped;
}
parent = VisualTreeHelper.GetParent(paren...
}
return null;
}
}
}
}}
***DataGridTemplateColumnで内部のコントロールにフォーカス...
-DataGridTextColumnなどでは上記シングルクリック対応により...
-これを解消するには、DataGridTemplateColumnを継承したクラ...
#pre{{
public class CustomDataGridTemplateColumn :DataGridTe...
{
protected override object PrepareCellForEdit(Fram...
...
{
editingElement.MoveFocus(new TraversalRequest...
return base.PrepareCellForEdit(editingElement...
}
}
}}
-xamlでDataGridTemplateColumn→CustomDataGridTemplateColum...
**行をDrag and Dropで入れ替える。セルベースで選択する [#m...
-[[Common DataGrid Add-Ons:http://code.msdn.microsoft.com...
**三つの状態をもったソート [#o9daccd7]
-[[WPF DataGrid: Tri-state Sorting sample - Vincent Sibal...
ページ名: