Я связал свой private List<MaintenanceWindow> tempMaintenanceWindows
с Datagrid и разрешил пользователю редактировать элементы в Datagrid, а также добавлять новые элементы. Это прекрасно работает.C# Список сравнения WPF <T> to Datagrid.ItemsSource
Теперь я подумал о том, как отменить изменения, сделанные пользователем, если окно закрыто, не нажимая сначала кнопку сохранения. В принципе, я хочу, чтобы сравнить Datagrid.ItemsSource к временному списку Я населенный, как это:
foreach (MaintenanceWindow mainWin in maintenanceWindowList)
tempMaintenanceWindows.Add(new MaintenanceWindow {from = mainWin.from, to = mainWin.to, abbreviation = mainWin.abbreviation, description = mainWin.description, hosts = mainWin.hosts });
Я сравниваю два так:
if (!tempMaintenanceWindows.SequenceEqual((List<MaintenanceWindow>)mainWinList.ItemsSource))
но результат SequenceEqual всегда, кажется, false, хотя при отладке кода они кажутся точно такими же.
Надеюсь, кто-то может помочь. Благодарю.
Квентин Roger представил решение подхода, который работает, но я хочу, чтобы опубликовать мой код, который, вероятно, не опрятный способом сделать это, но он подходит к моему случаю применения.
Так вот как я отменяю метод Equals моего объекта MaintenanceWindow:
public override bool Equals (object obj)
{
MaintenanceWindow item = obj as MaintenanceWindow;
if (!item.from.Equals(this.from))
return false;
if (!item.to.Equals(this.to))
return false;
if (!item.description.Equals(this.description))
return false;
if (!item.abbreviation.Equals(this.abbreviation))
return false;
if (item.hosts != null)
{
if (!item.hosts.Equals(this.hosts))
return false;
}
else
{
if (this.hosts != null)
return false;
}
return true;
}
SequenceEqual использует компаратор по умолчанию, вы переопределили значения для MaintenanceWindow? –
Сравнение по умолчанию, означает ли это, что он сравнивается как tempElement1.Equals (gridElement1) и так далее? Нет, я не переоценил это. Итак, в методе переопределения мне нужно сравнить каждое поле моего класса MaintenanceWindow? – jera
Точно вам нужно сравнить все значимые поля. –