Browse Source

avalonia: Added "Columns" styled property to AvaloniaDatGrid

Kenric Nugteren 1 month ago
parent
commit
8f939bf8ca

+ 14 - 0
InABox.Avalonia/Components/AvaloniaDataGrid/AvaloniaDataGrid.axaml.cs

@@ -38,6 +38,9 @@ public partial class AvaloniaDataGrid : UserControl, INotifyPropertyChanged
     public static StyledProperty<double> RowHeightProperty =
         AvaloniaProperty.Register<AvaloniaDataGrid, double>(nameof(RowHeight), 30);
 
+    public static StyledProperty<AvaloniaDataGridColumns?> ColumnsProperty =
+        AvaloniaProperty.Register<AvaloniaDataGrid, AvaloniaDataGridColumns?>(nameof(Columns), null);
+
     public string SearchText { get; set; } = "";
 
     public bool CanSearch
@@ -93,6 +96,17 @@ public partial class AvaloniaDataGrid : UserControl, INotifyPropertyChanged
         ItemsSourceProperty.Changed.AddClassHandler<AvaloniaDataGrid>(ItemsSource_Changed);
         LastUpdatedProperty.Changed.AddClassHandler<AvaloniaDataGrid>(LastUpdated_Changed);
         ShowRecordCountProperty.Changed.AddClassHandler<AvaloniaDataGrid>(ShowRecordCount_Changed);
+
+        ColumnsProperty.Changed.AddClassHandler<AvaloniaDataGrid>(ColumnsProperty_Changed);
+    }
+
+    private static void ColumnsProperty_Changed(AvaloniaDataGrid grid, AvaloniaPropertyChangedEventArgs args)
+    {
+        var columns = grid.GetValue(ColumnsProperty);
+        if(columns is not null)
+        {
+            grid.Columns.BeginUpdate().AddRange(columns).EndUpdate();
+        }
     }
 
     private static void ShowRecordCount_Changed(AvaloniaDataGrid grid, AvaloniaPropertyChangedEventArgs args)

+ 1 - 1
InABox.Avalonia/Components/AvaloniaDataGrid/Columns/AvaloniaDataGridImageColumn.cs

@@ -11,7 +11,7 @@ using System.Threading.Tasks;
 
 namespace InABox.Avalonia.Components;
 
-public class AvaloniaDataGridImageColumn<TEntity> : AvaloniaDataGridColumn<TEntity, IImage>
+public class AvaloniaDataGridImageColumn<TEntity> : AvaloniaDataGridColumn<TEntity, IImage?>
 {
     public override bool Searchable => false;
 

+ 1 - 0
InABox.Avalonia/Components/Modules/ModuleList/AvaloniaModuleList.axaml

@@ -39,6 +39,7 @@
                 Foreground="{StaticResource PrsTileForeground}"
                 HorizontalContentAlignment="Stretch"
                 VerticalContentAlignment="Stretch"
+                IsEnabled="{Binding IsEnabled}"
                 Command="{Binding TapCommand}">
                 <Grid>