diff --git a/src/AtomUI.Controls.DataGrid/Column/DataGridBoundColumn.cs b/src/AtomUI.Controls.DataGrid/Column/DataGridBoundColumn.cs index f10b50586..aa3f500fb 100644 --- a/src/AtomUI.Controls.DataGrid/Column/DataGridBoundColumn.cs +++ b/src/AtomUI.Controls.DataGrid/Column/DataGridBoundColumn.cs @@ -6,13 +6,11 @@ using System.Diagnostics; using AtomUI.Controls.Utils; using AtomUI.Data; -using AtomUI.Reactive; using Avalonia; using Avalonia.Controls; using Avalonia.Data; using Avalonia.Markup.Xaml.MarkupExtensions; using Avalonia.Metadata; -using BindingFlags = System.Reflection.BindingFlags; namespace AtomUI.Controls; @@ -60,7 +58,7 @@ public abstract class DataGridBoundColumn : DataGridColumn { binding.Converter = DataGridValueConverter.Instance; } - } + } // Apply the new Binding to existing rows in the DataGrid if (OwningGrid != null) diff --git a/src/AtomUI.Controls.DataGrid/Theme/DataGridRowTheme.cs b/src/AtomUI.Controls.DataGrid/Theme/DataGridRowTheme.cs index 5fa2b1fad..c8eecbee2 100644 --- a/src/AtomUI.Controls.DataGrid/Theme/DataGridRowTheme.cs +++ b/src/AtomUI.Controls.DataGrid/Theme/DataGridRowTheme.cs @@ -129,13 +129,42 @@ internal class DataGridRowTheme : BaseControlTheme commonStyle.Add(frameStyle); } - var hoverStyle = new Style(selector => selector.Nesting().Class(StdPseudoClass.PointerOver)); + { - var frameStyle = new Style(selector => selector.Nesting().Template().Name(FramePart)); - frameStyle.Add(Border.BackgroundProperty, DataGridTokenKey.TableRowHoverBg); - hoverStyle.Add(frameStyle); + var selectedStyle = new Style(selector => selector.Nesting().PropertyEquals(DataGridRow.IsSelectedProperty, true)); + + { + var frameStyle = new Style(selector => selector.Nesting().Template().Name(FramePart)); + frameStyle.Add(Border.BackgroundProperty, DataGridTokenKey.TableSelectedRowBg); + selectedStyle.Add(frameStyle); + } + + var hoverStyle = new Style(selector => selector.Nesting().Class(StdPseudoClass.PointerOver)); + { + var frameStyle = new Style(selector => selector.Nesting().Template().Name(FramePart)); + frameStyle.Add(Border.BackgroundProperty, DataGridTokenKey.TableSelectedRowHoverBg); + hoverStyle.Add(frameStyle); + } + selectedStyle.Add(hoverStyle); + commonStyle.Add(selectedStyle); } - commonStyle.Add(hoverStyle); + { + var unSelectedStyle = new Style(selector => selector.Nesting().PropertyEquals(DataGridRow.IsSelectedProperty, false)); + { + var frameStyle = new Style(selector => selector.Nesting().Template().Name(FramePart)); + frameStyle.Add(Border.BackgroundProperty, DataGridTokenKey.TableBg); + unSelectedStyle.Add(frameStyle); + } + var hoverStyle = new Style(selector => selector.Nesting().Class(StdPseudoClass.PointerOver)); + { + var frameStyle = new Style(selector => selector.Nesting().Template().Name(FramePart)); + frameStyle.Add(Border.BackgroundProperty, DataGridTokenKey.TableRowHoverBg); + hoverStyle.Add(frameStyle); + } + unSelectedStyle.Add(hoverStyle); + commonStyle.Add(unSelectedStyle); + } + // 动画设置 var isMotionEnabledStyle = new Style(selector => selector.Nesting().PropertyEquals(DataGridRow.IsMotionEnabledProperty, true));