Changes in DeliveryAdminWindow

This commit is contained in:
2023-07-21 18:21:47 +02:00
parent 75322da405
commit 5cee928978
6 changed files with 299 additions and 89 deletions

View File

@ -137,27 +137,54 @@ namespace Elwig.Helpers {
return null;
}
public static void RenewItemsSource(Selector selector, IEnumerable? source, Func<object?, object?> getId) {
public enum RenewSourceDefault {
None,
IfOnly,
First
}
public static void RenewItemsSource(Selector selector, IEnumerable? source, Func<object?, object?> getId, SelectionChangedEventHandler? handler = null, RenewSourceDefault def = RenewSourceDefault.None) {
if (selector.ItemsSource == source)
return;
var selectedId = getId(selector.SelectedItem);
if (handler != null) selector.SelectionChanged -= handler;
selector.ItemsSource = source;
if (selectedId != null && source != null)
selector.SelectedItem = source.Cast<object>().FirstOrDefault(i => selectedId.Equals(getId(i)));
if (source != null && selector.SelectedItem == null) {
if ((def == RenewSourceDefault.IfOnly && source.Cast<object>().Count() == 1) || def == RenewSourceDefault.First) {
selector.SelectedItem = source.Cast<object>().First();
}
}
if (handler != null) selector.SelectionChanged += handler;
}
public static void RenewItemsSource(Xceed.Wpf.Toolkit.Primitives.Selector selector, IEnumerable? source, Func<object?, object?> getId) {
public static void RenewItemsSource(Xceed.Wpf.Toolkit.Primitives.Selector selector, IEnumerable? source, Func<object?, object?> getId, Xceed.Wpf.Toolkit.Primitives.ItemSelectionChangedEventHandler? handler = null, RenewSourceDefault def = RenewSourceDefault.None) {
if (selector.ItemsSource == source)
return;
var selectedIds = selector.SelectedItems.Cast<object>().Select(i => getId(i)).ToList();
if (handler != null) selector.ItemSelectionChanged -= handler;
selector.ItemsSource = source;
if (source != null) {
foreach (var i in source.Cast<object>().Where(i => selectedIds.Contains(getId(i))))
selector.SelectedItems.Add(i);
}
if (source != null && selector.SelectedItem == null) {
if ((def == RenewSourceDefault.IfOnly && source.Cast<object>().Count() == 1) || def == RenewSourceDefault.First) {
selector.SelectedItem = source.Cast<object>().First();
}
}
if (handler != null) selector.ItemSelectionChanged += handler;
}
public static void RenewItemsSource(DataGrid dataGrid, IEnumerable? source, Func<object?, object?> getId, bool keepSort = true) {
public static void RenewItemsSource(DataGrid dataGrid, IEnumerable? source, Func<object?, object?> getId, SelectionChangedEventHandler? handler = null, RenewSourceDefault def = RenewSourceDefault.None, bool keepSort = true) {
if (dataGrid.ItemsSource == source)
return;
var column = dataGrid.CurrentCell.Column;
var sortColumns = dataGrid.Columns.Select(c => c.SortDirection).ToList();
var sort = dataGrid.Items.SortDescriptions.ToList();
var selectedId = getId(dataGrid.SelectedItem);
if (handler != null) dataGrid.SelectionChanged -= handler;
dataGrid.ItemsSource = source;
if (keepSort) {
for (int i = 0; i < dataGrid.Columns.Count; i++)
@ -169,13 +196,28 @@ namespace Elwig.Helpers {
dataGrid.SelectedItem = source.Cast<object>().FirstOrDefault(i => selectedId.Equals(getId(i)));
if (dataGrid.SelectedItem != null && column != null)
dataGrid.CurrentCell = new(dataGrid.SelectedItem, column);
if (source != null && dataGrid.SelectedItem == null) {
if ((def == RenewSourceDefault.IfOnly && source.Cast<object>().Count() == 1) || def == RenewSourceDefault.First) {
dataGrid.SelectedItem = source.Cast<object>().First();
}
}
if (handler != null) dataGrid.SelectionChanged += handler;
}
public static void RenewItemsSource(ListBox listBox, IEnumerable? source, Func<object?, object?> getId) {
public static void RenewItemsSource(ListBox listBox, IEnumerable? source, Func<object?, object?> getId, SelectionChangedEventHandler? handler = null, RenewSourceDefault def = RenewSourceDefault.None) {
if (listBox.ItemsSource == source)
return;
var selectedId = getId(listBox.SelectedItem);
if (handler != null) listBox.SelectionChanged -= handler;
listBox.ItemsSource = source;
if (selectedId != null && source != null)
listBox.SelectedItem = source.Cast<object>().FirstOrDefault(i => selectedId.Equals(getId(i)));
if (source != null && listBox.SelectedItem == null) {
if ((def == RenewSourceDefault.IfOnly && source.Cast<object>().Count() == 1) || def == RenewSourceDefault.First) {
listBox.SelectedItem = source.Cast<object>().First();
}
}
if (handler != null) listBox.SelectionChanged += handler;
}
public static int Modulo(string a, int b) {