Fix event handlers in ControlUtils
This commit is contained in:
@ -94,32 +94,28 @@ namespace Elwig.Helpers {
|
||||
var selectedId = getId(selector.SelectedItem);
|
||||
if (handler != null) selector.SelectionChanged -= handler;
|
||||
selector.ItemsSource = source;
|
||||
object? selItem = selector.SelectedItem;
|
||||
if (selectedId != null && source != null)
|
||||
selector.SelectedItem = source.Cast<object>().FirstOrDefault(i => selectedId.Equals(getId(i)));
|
||||
if (source != null && selector.SelectedItem == null) {
|
||||
selItem = source.Cast<object>().FirstOrDefault(i => selectedId.Equals(getId(i)));
|
||||
if (source != null && selItem == null) {
|
||||
if ((def == RenewSourceDefault.IfOnly && source.Cast<object>().Count() == 1) || def == RenewSourceDefault.First) {
|
||||
selector.SelectedItem = source.Cast<object>().First();
|
||||
selItem = source.Cast<object>().First();
|
||||
}
|
||||
}
|
||||
if (handler != null) selector.SelectionChanged += handler;
|
||||
selector.SelectedItem = selItem;
|
||||
}
|
||||
|
||||
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) {
|
||||
public static void RenewItemsSource(Xceed.Wpf.Toolkit.Primitives.Selector selector, IEnumerable? source, Func<object?, object?> getId) {
|
||||
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;
|
||||
object? selItem = selector.SelectedItem;
|
||||
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, SelectionChangedEventHandler? handler = null, RenewSourceDefault def = RenewSourceDefault.None, bool keepSort = true) {
|
||||
@ -131,6 +127,7 @@ namespace Elwig.Helpers {
|
||||
var selectedId = getId(dataGrid.SelectedItem);
|
||||
if (handler != null) dataGrid.SelectionChanged -= handler;
|
||||
dataGrid.ItemsSource = source;
|
||||
object? selItem = dataGrid.SelectedItem;
|
||||
if (keepSort) {
|
||||
for (int i = 0; i < dataGrid.Columns.Count; i++)
|
||||
dataGrid.Columns[i].SortDirection = sortColumns[i];
|
||||
@ -138,15 +135,16 @@ namespace Elwig.Helpers {
|
||||
dataGrid.Items.SortDescriptions.Add(s);
|
||||
}
|
||||
if (selectedId != null && source != null)
|
||||
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) {
|
||||
selItem = source.Cast<object>().FirstOrDefault(i => selectedId.Equals(getId(i)));
|
||||
if (source != null && selItem == null) {
|
||||
if ((def == RenewSourceDefault.IfOnly && source.Cast<object>().Count() == 1) || def == RenewSourceDefault.First) {
|
||||
dataGrid.SelectedItem = source.Cast<object>().First();
|
||||
selItem = source.Cast<object>().First();
|
||||
}
|
||||
}
|
||||
if (handler != null) dataGrid.SelectionChanged += handler;
|
||||
dataGrid.SelectedItem = selItem;
|
||||
if (dataGrid.SelectedItem != null && column != null)
|
||||
dataGrid.CurrentCell = new(dataGrid.SelectedItem, column);
|
||||
}
|
||||
|
||||
public static void RenewItemsSource(ListBox listBox, IEnumerable? source, Func<object?, object?> getId, SelectionChangedEventHandler? handler = null, RenewSourceDefault def = RenewSourceDefault.None) {
|
||||
@ -155,14 +153,16 @@ namespace Elwig.Helpers {
|
||||
var selectedId = getId(listBox.SelectedItem);
|
||||
if (handler != null) listBox.SelectionChanged -= handler;
|
||||
listBox.ItemsSource = source;
|
||||
object? selItem = listBox.SelectedItem;
|
||||
if (selectedId != null && source != null)
|
||||
listBox.SelectedItem = source.Cast<object>().FirstOrDefault(i => selectedId.Equals(getId(i)));
|
||||
if (source != null && listBox.SelectedItem == null) {
|
||||
selItem = source.Cast<object>().FirstOrDefault(i => selectedId.Equals(getId(i)));
|
||||
if (source != null && selItem == null) {
|
||||
if ((def == RenewSourceDefault.IfOnly && source.Cast<object>().Count() == 1) || def == RenewSourceDefault.First) {
|
||||
listBox.SelectedItem = source.Cast<object>().First();
|
||||
selItem = source.Cast<object>().First();
|
||||
}
|
||||
}
|
||||
if (handler != null) listBox.SelectionChanged += handler;
|
||||
listBox.SelectedItem = selItem;
|
||||
}
|
||||
|
||||
public static object? GetItemFromSource(IEnumerable source, Func<object?, object?> getId, object? id) {
|
||||
|
Reference in New Issue
Block a user