From 931aefe414022b76d25f276e24a87ec37b9a33f4 Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Sat, 10 Aug 2019 23:39:35 +0800 Subject: [PATCH] improved datagrid --- .../Themes/Styles/DataGrid.xaml | 1 + .../Themes/Styles/DataGrid.xaml | 1 + .../Themes/Styles/DataGrid.xaml | 1 + .../Controls/Attach/DataGridAttach.cs | 38 +++++++++++++++++++ 4 files changed, 41 insertions(+) diff --git a/src/Core_30/HandyControl_Core_30/Themes/Styles/DataGrid.xaml b/src/Core_30/HandyControl_Core_30/Themes/Styles/DataGrid.xaml index 3593fe3d..0381d657 100644 --- a/src/Core_30/HandyControl_Core_30/Themes/Styles/DataGrid.xaml +++ b/src/Core_30/HandyControl_Core_30/Themes/Styles/DataGrid.xaml @@ -257,6 +257,7 @@ + diff --git a/src/Net_40/HandyControl_Net_40/Themes/Styles/DataGrid.xaml b/src/Net_40/HandyControl_Net_40/Themes/Styles/DataGrid.xaml index 3f4bf166..a93c8b55 100644 --- a/src/Net_40/HandyControl_Net_40/Themes/Styles/DataGrid.xaml +++ b/src/Net_40/HandyControl_Net_40/Themes/Styles/DataGrid.xaml @@ -258,6 +258,7 @@ + diff --git a/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/DataGrid.xaml b/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/DataGrid.xaml index c3c5a29c..41eecff7 100644 --- a/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/DataGrid.xaml +++ b/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/DataGrid.xaml @@ -257,6 +257,7 @@ + diff --git a/src/Shared/HandyControl_Shared/Controls/Attach/DataGridAttach.cs b/src/Shared/HandyControl_Shared/Controls/Attach/DataGridAttach.cs index 12a0e725..ec004f40 100644 --- a/src/Shared/HandyControl_Shared/Controls/Attach/DataGridAttach.cs +++ b/src/Shared/HandyControl_Shared/Controls/Attach/DataGridAttach.cs @@ -8,6 +8,44 @@ namespace HandyControl.Controls { public class DataGridAttach { + public static readonly DependencyProperty ApplyDefaultStyleProperty = DependencyProperty.RegisterAttached( + "ApplyDefaultStyle", typeof(bool), typeof(DataGridAttach), new PropertyMetadata(ValueBoxes.FalseBox, OnApplyDefaultStyleChanged)); + + private static void OnApplyDefaultStyleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var grid = (DataGrid)d; + if ((bool)e.NewValue) + { + if (grid.AutoGenerateColumns) + { + grid.AutoGeneratedColumns += Grid_AutoGeneratedColumns; + return; + } + + UpdateTextColumnStyles(grid); + UpdateComboBoxColumnStyles(grid); + UpdateCheckBoxColumnStyles(grid); + } + else + { + grid.AutoGeneratedColumns -= Grid_AutoGeneratedColumns; + } + } + + private static void Grid_AutoGeneratedColumns(object sender, System.EventArgs e) + { + var grid = (DataGrid)sender; + UpdateTextColumnStyles(grid); + UpdateComboBoxColumnStyles(grid); + UpdateCheckBoxColumnStyles(grid); + } + + public static void SetApplyDefaultStyle(DependencyObject element, bool value) + => element.SetValue(ApplyDefaultStyleProperty, value); + + public static bool GetApplyDefaultStyle(DependencyObject element) + => (bool) element.GetValue(ApplyDefaultStyleProperty); + public static readonly DependencyProperty TextColumnStyleProperty = DependencyProperty.RegisterAttached( "TextColumnStyle", typeof(Style), typeof(DataGridAttach), new PropertyMetadata(default(Style), OnTextColumnStyleChanged));