【问题标题】:Maintain Selection State After Changing Backend Collection in ListView在 ListView 中更改后端集合后保持选择状态
【发布时间】:2009-03-17 21:09:35
【问题描述】:

我有一个列表视图控件,它绑定到我经常更新的可观察集合。当我更新集合时,我清除集合然后添加值。虽然这对于简单的更改来说有点矫枉过正,但它非常简单并且可以完成工作。这样做时,我会丢失在我的列表视图控件中选择了哪个项目,并且无法弄清楚如何在更新后保持所选状态。

我最初认为我可以使用以下 (WPF) 双向绑定 SelectedValue:

SelectedValue="{Binding Path=SelectedDevice, Mode=TwoWay}

然后通过以下方式更新我的收藏:

string PreviouslySelectedDevice = this.SelectedDevice;
aCollection.Clear();
// ... Add Items ...
this.SelectedDevice = PreviouslySelectedDevice;

我希望 TwoWay 绑定允许我对后端属性进行更改,这将自动反映在 listView 控件中,但这不起作用。提前致谢!

【问题讨论】:

    标签: wpf binding


    【解决方案1】:

    您的绑定似乎应该更新SelectedValueSelectedDeviceDependencyProperty 还是你在实现 INotifyPropertyChanged

    【讨论】:

    • SelectedDevice 是一个 KeyValuePair,用于存储所选设备(SelectedDevice ID、SelectedDevice Name)。我怀疑问题是因为 KeyValuePair 没有实现 INotifyPropertyChanged,所以控件没有按我的预期更新。
    • 它将是具有需要实现 INotifyPropertyChanged 的​​ SelectedDevice 属性的类,或者 SelectedDevice 属性需要是 DependencyProperty。
    猜你喜欢
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2012-08-07
    • 2017-09-17
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 2021-02-12
    相关资源
    最近更新 更多