i 有 2 个 observableCollection 实例
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
这样做时,报表中的依赖属性"IsSelected"将丢失其值;因此,如果"报告"列表中的一个对象"x"具有"IsSelected = True",则将其添加到"可用报告"列表后,"x.IsSelected"将返回 False。
下面是报表类的代码
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
结束类
我无法重现您的问题。如果我创建一个对象并将它们放入不同的 ObservableCollections,那么这个对象具有相同的值,也是通过依赖属性,它不能是其他的,因为集合共享同一个对象,这是引用类型。如果我将这些集合绑定到不同的 UI 控件并绑定 IsSelected 属性,则更改一个控件中的属性会导致更改另一个控件中的选择。
修改您的代码,无论您发布的代码是否与您的真实代码匹配。它应该有效。