|
@@ -21,6 +21,7 @@ public interface IMultiSelectDialog
|
|
|
CoreTable Data();
|
|
|
|
|
|
Entity[] Items(IColumns? columns = null);
|
|
|
+ bool CanAdd { get; set; }
|
|
|
}
|
|
|
|
|
|
public class MultiSelectDialogSettings : BaseObject, IUserConfigurationSettings
|
|
@@ -43,27 +44,30 @@ public class MultiSelectDialog<T> : IMultiSelectDialog where T : Entity, IRemota
|
|
|
|
|
|
private readonly Filter<T>? _filter;
|
|
|
private readonly DynamicDataGrid<T> datagrid;
|
|
|
- private readonly Grid grid;
|
|
|
- private readonly Button ClearButton;
|
|
|
+ //private readonly Grid grid;
|
|
|
+ private readonly Button CancelButton;
|
|
|
private readonly Button OKButton;
|
|
|
private ThemableWindow? window;
|
|
|
|
|
|
+ public bool CanAdd { get; set; } = true;
|
|
|
+
|
|
|
public MultiSelectDialog(Filter<T>? filter, Columns<T>? columns, bool multiselect = true)
|
|
|
{
|
|
|
|
|
|
_filter = filter;
|
|
|
|
|
|
- grid = new Grid();
|
|
|
- grid.Margin = new Thickness(5);
|
|
|
- grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1.0F, GridUnitType.Star) });
|
|
|
- grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(40.0F, GridUnitType.Pixel) });
|
|
|
+ //grid = new Grid();
|
|
|
+ //grid.Margin = new Thickness(5);
|
|
|
+ //grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1.0F, GridUnitType.Star) });
|
|
|
+ //grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(40.0F, GridUnitType.Pixel) });
|
|
|
|
|
|
- grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(80.0F, GridUnitType.Pixel) });
|
|
|
- grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1.0F, GridUnitType.Star) });
|
|
|
- grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(80.0F, GridUnitType.Pixel) });
|
|
|
- grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(80.0F, GridUnitType.Pixel) });
|
|
|
+ //grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(80.0F, GridUnitType.Pixel) });
|
|
|
+ //grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1.0F, GridUnitType.Star) });
|
|
|
+ //grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(80.0F, GridUnitType.Pixel) });
|
|
|
+ //grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(80.0F, GridUnitType.Pixel) });
|
|
|
|
|
|
datagrid = new DynamicDataGrid<T>();
|
|
|
+ datagrid.Margin = new Thickness(5);
|
|
|
|
|
|
datagrid.Reconfigure(options =>
|
|
|
{
|
|
@@ -73,9 +77,17 @@ public class MultiSelectDialog<T> : IMultiSelectDialog where T : Entity, IRemota
|
|
|
options.FilterRows = true;
|
|
|
if (multiselect)
|
|
|
options.MultiSelect = true;
|
|
|
+ options.AddRows = CanAdd;
|
|
|
+ options.RecordCount = true;
|
|
|
options.EndUpdate();
|
|
|
});
|
|
|
datagrid.Reconfigure();
|
|
|
+ OKButton = datagrid.AddButton("OK", null, OKClick, DynamicGridButtonPosition.Right);
|
|
|
+ OKButton.Width = 80;
|
|
|
+ OKButton.IsEnabled = false;
|
|
|
+
|
|
|
+ CancelButton = datagrid.AddButton("Cancel", null, CancelClick, DynamicGridButtonPosition.Right);
|
|
|
+ CancelButton.Width = 80;
|
|
|
|
|
|
datagrid.OnReload += Grid_OnReload;
|
|
|
datagrid.OnDoubleClick += Grid_DoubleClick;
|
|
@@ -107,33 +119,48 @@ public class MultiSelectDialog<T> : IMultiSelectDialog where T : Entity, IRemota
|
|
|
datagrid.SetValue(Grid.ColumnProperty, 0);
|
|
|
datagrid.SetValue(Grid.ColumnSpanProperty, 4);
|
|
|
datagrid.OnSelectItem += Datagrid_OnSelectItem;
|
|
|
- grid.Children.Add(datagrid);
|
|
|
+ //grid.Children.Add(datagrid);
|
|
|
|
|
|
- ClearButton = new Button();
|
|
|
- ClearButton.Margin = new Thickness(0, 5, 5, 0);
|
|
|
- ClearButton.Content = "Clear";
|
|
|
- ClearButton.Click += ClearButton_Click;
|
|
|
- ClearButton.SetValue(Grid.RowProperty, 1);
|
|
|
- ClearButton.SetValue(Grid.ColumnProperty, 0);
|
|
|
- grid.Children.Add(ClearButton);
|
|
|
-
|
|
|
- OKButton = new Button();
|
|
|
- OKButton.Margin = new Thickness(5, 5, 0, 0);
|
|
|
- OKButton.Content = "OK";
|
|
|
- OKButton.Click += OKButton_Click;
|
|
|
- OKButton.SetValue(Grid.RowProperty, 1);
|
|
|
- OKButton.SetValue(Grid.ColumnProperty, 2);
|
|
|
- OKButton.IsEnabled = false;
|
|
|
- grid.Children.Add(OKButton);
|
|
|
+ // ClearButton = new Button();
|
|
|
+ // ClearButton.Margin = new Thickness(0, 5, 5, 0);
|
|
|
+ // ClearButton.Content = "Clear";
|
|
|
+ // ClearButton.Click += ClearButton_Click;
|
|
|
+ // ClearButton.SetValue(Grid.RowProperty, 1);
|
|
|
+ // ClearButton.SetValue(Grid.ColumnProperty, 0);
|
|
|
+ // grid.Children.Add(ClearButton);
|
|
|
+ //
|
|
|
+ // OKButton = new Button();
|
|
|
+ // OKButton.Margin = new Thickness(5, 5, 0, 0);
|
|
|
+ // OKButton.Content = "OK";
|
|
|
+ // OKButton.Click += OKButton_Click;
|
|
|
+ // OKButton.SetValue(Grid.RowProperty, 1);
|
|
|
+ // OKButton.SetValue(Grid.ColumnProperty, 2);
|
|
|
+ // OKButton.IsEnabled = false;
|
|
|
+ // grid.Children.Add(OKButton);
|
|
|
+ //
|
|
|
+ // var CancelButton = new Button();
|
|
|
+ // CancelButton.Margin = new Thickness(5, 5, 0, 0);
|
|
|
+ // CancelButton.Content = "Cancel";
|
|
|
+ // CancelButton.Click += CancelButton_Click;
|
|
|
+ // CancelButton.SetValue(Grid.RowProperty, 1);
|
|
|
+ // CancelButton.SetValue(Grid.ColumnProperty, 3);
|
|
|
+ // grid.Children.Add(CancelButton);
|
|
|
+ }
|
|
|
|
|
|
- var CancelButton = new Button();
|
|
|
- CancelButton.Margin = new Thickness(5, 5, 0, 0);
|
|
|
- CancelButton.Content = "Cancel";
|
|
|
- CancelButton.Click += CancelButton_Click;
|
|
|
- CancelButton.SetValue(Grid.RowProperty, 1);
|
|
|
- CancelButton.SetValue(Grid.ColumnProperty, 3);
|
|
|
- grid.Children.Add(CancelButton);
|
|
|
+ private bool OKClick(Button button, CoreRow[] rows)
|
|
|
+ {
|
|
|
+ window!.DialogResult = true;
|
|
|
+ window!.Close();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ private bool CancelClick(Button button, CoreRow[] rows)
|
|
|
+ {
|
|
|
+ window!.DialogResult = false;
|
|
|
+ window!.Close();
|
|
|
+ return false;
|
|
|
}
|
|
|
+
|
|
|
public bool ShowDialog(string? column = null, string? value = null, FilterType filtertype = FilterType.Contains) =>
|
|
|
ShowDialogInternal(null, column, value, filtertype);
|
|
|
public bool ShowDialog(string title) =>
|
|
@@ -145,7 +172,7 @@ public class MultiSelectDialog<T> : IMultiSelectDialog where T : Entity, IRemota
|
|
|
{
|
|
|
Title = title ?? "Select Items",
|
|
|
WindowStyle = WindowStyle.SingleBorderWindow,
|
|
|
- Content = grid
|
|
|
+ Content = datagrid
|
|
|
};
|
|
|
datagrid.Refresh(true, true);
|
|
|
if (!column.IsNullOrWhiteSpace() && !value.IsNullOrWhiteSpace())
|
|
@@ -245,22 +272,23 @@ public class MultiSelectDialog<T> : IMultiSelectDialog where T : Entity, IRemota
|
|
|
OKButton.IsEnabled = e.Rows?.Any() == true;
|
|
|
}
|
|
|
|
|
|
- private void CancelButton_Click(object sender, RoutedEventArgs e)
|
|
|
- {
|
|
|
- window!.Close();
|
|
|
- }
|
|
|
-
|
|
|
- private void OKButton_Click(object sender, RoutedEventArgs e)
|
|
|
- {
|
|
|
- window!.DialogResult = true;
|
|
|
- window.Close();
|
|
|
- }
|
|
|
-
|
|
|
- private void ClearButton_Click(object sender, RoutedEventArgs e)
|
|
|
- {
|
|
|
- window!.DialogResult = false;
|
|
|
- window.Close();
|
|
|
- }
|
|
|
+ // private void CancelButton_Click(object sender, RoutedEventArgs e)
|
|
|
+ // {
|
|
|
+ // window!.DialogResult = false;
|
|
|
+ // window!.Close();
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // private void OKButton_Click(object sender, RoutedEventArgs e)
|
|
|
+ // {
|
|
|
+ // window!.DialogResult = true;
|
|
|
+ // window.Close();
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // private void ClearButton_Click(object sender, RoutedEventArgs e)
|
|
|
+ // {
|
|
|
+ // window!.DialogResult = false;
|
|
|
+ // window.Close();
|
|
|
+ // }
|
|
|
|
|
|
private void Grid_OnReload(object sender, Filters<T> criteria, Columns<T> columns, ref SortOrder<T>? sortby)
|
|
|
{
|