Fix event handlers in ControlUtils when new item is null
This commit is contained in:
@ -82,9 +82,7 @@ namespace Elwig.Helpers {
|
||||
if (selector.ItemsSource == source)
|
||||
return;
|
||||
var selectedId = getId(selector.SelectedItem);
|
||||
if (handler != null) selector.SelectionChanged -= handler;
|
||||
selector.ItemsSource = source;
|
||||
object? selItem = selector.SelectedItem;
|
||||
object? selItem = null;
|
||||
if (selectedId != null && source != null)
|
||||
selItem = source.Cast<object>().FirstOrDefault(i => selectedId.Equals(getId(i)));
|
||||
if (source != null && selItem == null) {
|
||||
@ -92,7 +90,9 @@ namespace Elwig.Helpers {
|
||||
selItem = source.Cast<object>().First();
|
||||
}
|
||||
}
|
||||
if (handler != null) selector.SelectionChanged += handler;
|
||||
if (handler != null && selItem != null) selector.SelectionChanged -= handler;
|
||||
selector.ItemsSource = source;
|
||||
if (handler != null && selItem != null) selector.SelectionChanged += handler;
|
||||
selector.SelectedItem = selItem;
|
||||
}
|
||||
|
||||
@ -101,7 +101,6 @@ namespace Elwig.Helpers {
|
||||
return;
|
||||
var selectedIds = selector.SelectedItems.Cast<object>().Select(i => getId(i)).ToList();
|
||||
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);
|
||||
@ -115,15 +114,7 @@ namespace Elwig.Helpers {
|
||||
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;
|
||||
object? selItem = dataGrid.SelectedItem;
|
||||
if (keepSort) {
|
||||
for (int i = 0; i < dataGrid.Columns.Count; i++)
|
||||
dataGrid.Columns[i].SortDirection = sortColumns[i];
|
||||
foreach (var s in sort)
|
||||
dataGrid.Items.SortDescriptions.Add(s);
|
||||
}
|
||||
object? selItem = null;
|
||||
if (selectedId != null && source != null)
|
||||
selItem = source.Cast<object>().FirstOrDefault(i => selectedId.Equals(getId(i)));
|
||||
if (source != null && selItem == null) {
|
||||
@ -131,8 +122,16 @@ namespace Elwig.Helpers {
|
||||
selItem = source.Cast<object>().First();
|
||||
}
|
||||
}
|
||||
if (handler != null) dataGrid.SelectionChanged += handler;
|
||||
if (handler != null && selItem != null) dataGrid.SelectionChanged -= handler;
|
||||
dataGrid.ItemsSource = source;
|
||||
if (handler != null && selItem != null) dataGrid.SelectionChanged += handler;
|
||||
dataGrid.SelectedItem = selItem;
|
||||
if (keepSort) {
|
||||
for (int i = 0; i < dataGrid.Columns.Count; i++)
|
||||
dataGrid.Columns[i].SortDirection = sortColumns[i];
|
||||
foreach (var s in sort)
|
||||
dataGrid.Items.SortDescriptions.Add(s);
|
||||
}
|
||||
if (dataGrid.SelectedItem != null && column != null)
|
||||
dataGrid.CurrentCell = new(dataGrid.SelectedItem, column);
|
||||
}
|
||||
@ -141,9 +140,7 @@ namespace Elwig.Helpers {
|
||||
if (listBox.ItemsSource == source)
|
||||
return;
|
||||
var selectedId = getId(listBox.SelectedItem);
|
||||
if (handler != null) listBox.SelectionChanged -= handler;
|
||||
listBox.ItemsSource = source;
|
||||
object? selItem = listBox.SelectedItem;
|
||||
object? selItem = null;
|
||||
if (selectedId != null && source != null)
|
||||
selItem = source.Cast<object>().FirstOrDefault(i => selectedId.Equals(getId(i)));
|
||||
if (source != null && selItem == null) {
|
||||
@ -151,7 +148,9 @@ namespace Elwig.Helpers {
|
||||
selItem = source.Cast<object>().First();
|
||||
}
|
||||
}
|
||||
if (handler != null) listBox.SelectionChanged += handler;
|
||||
if (handler != null && selItem != null) listBox.SelectionChanged -= handler;
|
||||
listBox.ItemsSource = source;
|
||||
if (handler != null && selItem != null) listBox.SelectionChanged += handler;
|
||||
listBox.SelectedItem = selItem;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user