/ / użycie 2 observableCollections z tymi samymi obiektami, do których się odwołuje, traci wartości zależności zależnych - wpf - wpf, vb.net, observablecollection

przy użyciu 2 obserwowalnych kolekcji z takimi obiektami, do których odwołuje się, tracą wartości dependencyProperties - wpf - wpf, vb.net, observablecollection

Mam 2 wystąpienia observableCollection

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

pierwsza lista jest wypełniana po inicjalizacji, a druga jest wypełniana obiektami z pierwszej listy, które spełniają określone warunki.

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

robiąc to, dependencyProperty „IsSelected”w raporcie traci swoją wartość; więc jeśli jeden obiekt „x” na liście raportów ma „IsSelected = True”, po dodaniu go do listy AvailableReports „x.IsSelected” zwróci False.

Oto kod klasy Report

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

Klasa końcowa

Odpowiedzi:

0 dla odpowiedzi № 1

Nie mogę odtworzyć twojego problemu. Jeśli tworzę obiekt i umieszczam go w różnych ObservableCollections, to ten obiekt ma te same wartości, również przez właściwości zależności i nie może być inaczej, ponieważ kolekcje dzielą ten sam obiekt, który jest typu referencyjnego. Jeśli powiązam te kolekcje z różnymi kontrolkami ui i wiążę własność IsSelected, to zmiana właściwości w jednym kontrolce powoduje zmianę wyboru w innym.
Popraw swój kod, czy kod, który umieściłeś, pasuje do twojego prawdziwego kodu. To powinno działać.