|
|
@@ -169,7 +169,8 @@ public abstract class BaseDynamicGrid : ContentControl, IDynamicGridUIComponentP
|
|
|
|
|
|
protected DynamicGridSettings Settings { get; set; }
|
|
|
|
|
|
-
|
|
|
+ private static BitmapImage _pencil = Wpf.Resources.pencil.AsBitmapImage(Color.White);
|
|
|
+ private static BitmapImage _view = Wpf.Resources.view.AsBitmapImage(Color.White);
|
|
|
public BaseDynamicGrid() : base()
|
|
|
{
|
|
|
UseWaitCursor = true;
|
|
|
@@ -229,7 +230,7 @@ public abstract class BaseDynamicGrid : ContentControl, IDynamicGridUIComponentP
|
|
|
Add.Margin = new Thickness(0, 2, 2, 0);
|
|
|
Add.Click += Add_Click;
|
|
|
|
|
|
- Edit = CreateButton(Wpf.Resources.pencil.AsBitmapImage(Color.White));
|
|
|
+ Edit = CreateButton(_pencil);
|
|
|
Edit.Margin = new Thickness(0, 2, 2, 0);
|
|
|
Edit.Click += Edit_Click;
|
|
|
|
|
|
@@ -683,6 +684,8 @@ public abstract class BaseDynamicGrid : ContentControl, IDynamicGridUIComponentP
|
|
|
|
|
|
private bool _hasLoadedOptions = false;
|
|
|
|
|
|
+ private event Action? _optionAction;
|
|
|
+
|
|
|
protected virtual void OptionsChanged()
|
|
|
{
|
|
|
var reloadColumns = false;
|
|
|
@@ -693,9 +696,10 @@ public abstract class BaseDynamicGrid : ContentControl, IDynamicGridUIComponentP
|
|
|
}
|
|
|
|
|
|
Add.Visibility = Options.AddRows ? Visibility.Visible : Visibility.Collapsed;
|
|
|
- Edit.Visibility = Options.EditRows ? Visibility.Visible : Visibility.Collapsed;
|
|
|
+ Edit.Visibility = Options.ViewRows ? Visibility.Visible : Visibility.Collapsed;
|
|
|
+ UpdateButton(Edit, Options.EditRows ? _pencil : _view, null);
|
|
|
|
|
|
- EditSpacer.Visibility = Options.AddRows || Options.EditRows
|
|
|
+ EditSpacer.Visibility = Options.AddRows || Options.ViewRows
|
|
|
? Visibility.Visible
|
|
|
: Visibility.Collapsed;
|
|
|
|
|
|
@@ -756,6 +760,8 @@ public abstract class BaseDynamicGrid : ContentControl, IDynamicGridUIComponentP
|
|
|
reloadColumns = true;
|
|
|
}
|
|
|
|
|
|
+ _optionAction?.Invoke();
|
|
|
+
|
|
|
if(reloadColumns && IsReady)
|
|
|
{
|
|
|
Refresh(true, false);
|
|
|
@@ -879,7 +885,7 @@ public abstract class BaseDynamicGrid : ContentControl, IDynamicGridUIComponentP
|
|
|
OnDoubleClick?.Invoke(sender, e);
|
|
|
if (e.Handled)
|
|
|
return;
|
|
|
- if (Options.EditRows)
|
|
|
+ if (Options.ViewRows)
|
|
|
DoEdit();
|
|
|
}
|
|
|
|
|
|
@@ -1617,7 +1623,14 @@ public abstract class BaseDynamicGrid : ContentControl, IDynamicGridUIComponentP
|
|
|
}
|
|
|
|
|
|
|
|
|
- public Button AddButton(string? caption, ImageSource? image, string? tooltip, DynamicGridButtonClickEvent action, DynamicGridButtonPosition position = DynamicGridButtonPosition.Left)
|
|
|
+ public Button AddButton(
|
|
|
+ string? caption,
|
|
|
+ ImageSource? image,
|
|
|
+ string? tooltip,
|
|
|
+ DynamicGridButtonClickEvent action,
|
|
|
+ DynamicGridButtonPosition position = DynamicGridButtonPosition.Left,
|
|
|
+ Func<DynamicGridOptions, bool>? isVisible = null
|
|
|
+ )
|
|
|
{
|
|
|
var button = CreateButton(image, caption, tooltip);
|
|
|
button.Margin = position == DynamicGridButtonPosition.Right
|
|
|
@@ -1628,6 +1641,14 @@ public abstract class BaseDynamicGrid : ContentControl, IDynamicGridUIComponentP
|
|
|
button.Padding = !String.IsNullOrWhiteSpace(caption) ? new Thickness(5, 1, 5, 1) : new Thickness(1);
|
|
|
button.Tag = action;
|
|
|
button.Click += Button_Click;
|
|
|
+ if(isVisible is not null)
|
|
|
+ {
|
|
|
+ button.Visibility = isVisible(Options) ? Visibility.Visible : Visibility.Collapsed;
|
|
|
+ _optionAction += () =>
|
|
|
+ {
|
|
|
+ button.Visibility = isVisible(Options) ? Visibility.Visible : Visibility.Collapsed;
|
|
|
+ };
|
|
|
+ }
|
|
|
if (position == DynamicGridButtonPosition.Right)
|
|
|
RightButtonStack.Children.Add(button);
|
|
|
else
|
|
|
@@ -1636,9 +1657,52 @@ public abstract class BaseDynamicGrid : ContentControl, IDynamicGridUIComponentP
|
|
|
return button;
|
|
|
}
|
|
|
|
|
|
- public Button AddButton(string? caption, ImageSource? image, DynamicGridButtonClickEvent action, DynamicGridButtonPosition position = DynamicGridButtonPosition.Left)
|
|
|
+ public Button AddButton(
|
|
|
+ string? caption,
|
|
|
+ ImageSource? image,
|
|
|
+ DynamicGridButtonClickEvent action,
|
|
|
+ DynamicGridButtonPosition position = DynamicGridButtonPosition.Left,
|
|
|
+ Func<DynamicGridOptions, bool>? isVisible = null
|
|
|
+ )
|
|
|
{
|
|
|
- var result = AddButton(caption, image, null, action, position);
|
|
|
+ var result = AddButton(caption, image, null, action, position, isVisible: isVisible);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Adds a button that is only visible if this grid is editable (i.e., <c>Options.EditRows</c> is <see langword="true"/>)
|
|
|
+ /// </summary>
|
|
|
+ public Button AddEditButton(
|
|
|
+ string? caption,
|
|
|
+ ImageSource? image,
|
|
|
+ string? tooltip,
|
|
|
+ DynamicGridButtonClickEvent action,
|
|
|
+ DynamicGridButtonPosition position = DynamicGridButtonPosition.Left,
|
|
|
+ Func<DynamicGridOptions, bool>? isVisible = null
|
|
|
+ )
|
|
|
+ {
|
|
|
+ var result = AddButton(caption, image, tooltip, action, position,
|
|
|
+ isVisible: isVisible != null
|
|
|
+ ? (options => options.EditRows && isVisible(options))
|
|
|
+ : (options => options.EditRows));
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Adds a button that is only visible if this grid is editable (i.e., <c>Options.EditRows</c> is <see langword="true"/>)
|
|
|
+ /// </summary>
|
|
|
+ public Button AddEditButton(
|
|
|
+ string? caption,
|
|
|
+ ImageSource? image,
|
|
|
+ DynamicGridButtonClickEvent action,
|
|
|
+ DynamicGridButtonPosition position = DynamicGridButtonPosition.Left,
|
|
|
+ Func<DynamicGridOptions, bool>? isVisible = null
|
|
|
+ )
|
|
|
+ {
|
|
|
+ var result = AddButton(caption, image, null, action, position,
|
|
|
+ isVisible: isVisible != null
|
|
|
+ ? (options => options.EditRows && isVisible(options))
|
|
|
+ : (options => options.EditRows));
|
|
|
return result;
|
|
|
}
|
|
|
|