/ / використовуючи 2 спостерігаютьсяколекції з однаковими посилаються об'єктами, втрачає значення залежностіProperties - wpf - wpf, vb.net, proservablecollection

використання 2 observableCollections з тими ж об'єктами, що посилаються, втрачає значення dependencyProperties - wpf - wpf, vb.net, observablecollection

У мене є 2 випадки спостережуваного колекції

Public Property Reports As New ObservableCollection(Of Report)
Public Property AvailableReports As New ObservableCollection(Of Report)

перший список заповнюється після ініціалізації, а другий заповнюється об'єктами з першого списку, які відповідають певним умовам.

For Each rep As Report In Reports
If rep.Width = _customWidth
AvailableReports.Add(rep)
End If
Next

при цьому залежність властивості "Вибирається"у Звіті втрачає свою цінність; так що якщо один об’єкт "x" у списку звітів має "IsSelected = True", після додавання його до списку AvailableReports "x.IsSelected" поверне помилкове значення.

Ось код класу Звіт

Public Class Report
Inherits DependencyObject
Implements IComparable(Of Report)

Public Property Layout As Byte()
Public Property reportId As Integer
Public Property Name As String
Public Property Width As Double

Public Shared ReadOnly IsSelectedProperty As DependencyProperty = DependencyProperty.Register("IsSelected", GetType(Boolean), GetType(Report))
Public Property IsSelected As Boolean
Get
Return GetValue(IsSelectedProperty)
End Get
Set(value As Boolean)
SetValue(IsSelectedProperty, value)
End Set
End Property

Public Function CompareTo(other As Report) As Integer Implements IComparable(Of Report).CompareTo
Return Me.Width.CompareTo(other.Width)
End Function

Кінцевий клас

Відповіді:

0 для відповіді № 1

Я не можу відтворити вашу проблему. Якщо я створюю об'єкт і розміщую їх у різних ObservableCollections, то цей об’єкт має однакові значення, також за властивостями залежності, і не може бути інакше, тому що колекції мають один і той же об'єкт, який є еталонним типом. Якщо я пов'язую ці колекції з різними елементами управління інтерфейсом та зв’язую властивість IsSelected, то зміна властивості в одному елементі управління призводить до зміни вибору в іншому.
Перегляньте свій код, чи відповідає код, який ви опублікували, справжньому коду. Це має працювати.