瀏覽代碼

Fixed scroll viewers in forms not scrolling when disabled.

Kenric Nugteren 2 年之前
父節點
當前提交
aae0e22145

+ 21 - 0
InABox.DynamicGrid/FormDesigner/Controls/Fields/DFMultiImageControl.cs

@@ -19,6 +19,23 @@ namespace InABox.DynamicGrid
     {
         private Grid Grid = null!; // Late-initialised
         private StackPanel Images = null!; // Late-initialised
+        private bool Enabled = true;
+
+        static DFMultiImageControl()
+        {
+            IsEnabledProperty.OverrideMetadata(
+                typeof(DFMultiImageControl),
+                new UIPropertyMetadata(
+                    true,
+                    ControlIsEnabledChanged));
+        }
+
+        private static void ControlIsEnabledChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
+        {
+            var control = (DFMultiImageControl)obj;
+            control.IsEnabled = true;
+            control.Enabled = (bool)e.NewValue;
+        }
 
         protected override FrameworkElement Create()
         {
@@ -92,6 +109,10 @@ namespace InABox.DynamicGrid
                 menu.AddItem("View Image", null, image, MultiImageView_Click);
                 menu.AddItem("Remove Image", null, border, MultiImageRemove_Click);
                 image.ContextMenu = menu;
+                image.ContextMenuOpening += (sender, args) =>
+                {
+                    if (!Enabled) args.Handled = true;
+                };
 
                 border.Child = image;
                 Images.Children.Add(border);

+ 21 - 0
InABox.DynamicGrid/FormDesigner/Controls/Fields/DFMultiSignatureControl.cs

@@ -17,6 +17,23 @@ namespace InABox.DynamicGrid
     {
         private Grid Grid = null!; // Late-initialised
         private Grid Images = null!; // Late-initialised
+        private bool Enabled = true;
+
+        static DFMultiSignatureControl()
+        {
+            IsEnabledProperty.OverrideMetadata(
+                typeof(DFMultiSignatureControl),
+                new UIPropertyMetadata(
+                    true,
+                    ControlIsEnabledChanged));
+        }
+
+        private static void ControlIsEnabledChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
+        {
+            var control = (DFMultiSignatureControl)obj;
+            control.IsEnabled = true;
+            control.Enabled = (bool)e.NewValue;
+        }
 
         protected override FrameworkElement Create()
         {
@@ -88,6 +105,10 @@ namespace InABox.DynamicGrid
 
                 var menu = new ContextMenu();
                 menu.AddItem("Remove Signature", null, image, MultiSignatureRemove_Click);
+                image.ContextMenuOpening += (sender, args) =>
+                {
+                    if (!Enabled) args.Handled = true;
+                };
 
                 Images.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });