【问题标题】:Strategies for handling IsSelected and IsExpanded on objects in a TreeView处理 TreeView 中对象的 IsSelected 和 IsExpanded 的策略
【发布时间】:2012-07-22 12:41:09
【问题描述】:

想象一组要在列表和树中显示的联系人和联系人组。最初,我只是将 IsSelected 和 IsExpanded 属性添加到公共基类中,这对 TreeView 来说效果很好。

我遇到的问题是对象可以出现在树中的不同位置(想象人们被分配到多个组)。结果是,当我选择一个人时,该人在任何地方都被选中 - 在每个组中。这看起来有点不寻常,但工作正常。当此人出现在单独的列表中并被选中时,它会变得很棘手。由于对象相同,因此选择出现在所有列表中的任何位置。

您如何管理选择?将对象放在临时选择容器中更好吗?有什么好的策略吗?

谢谢

【问题讨论】:

    标签: wpf listview treeview selection


    【解决方案1】:

    您的人员类可能有多个 IsSelected 属性,例如:

    IsSelectedInTree

    IsSelectedInList

    .

    .

    .

    然后让你的绑定更具体:

    <... IsSelected={Binding IsSelectedInTree}... >
    

    【讨论】:

    • 感谢您的建议。我对将 IsSelected 添加到我的模型对象中一点也不高兴。为对象可能出现的每个可能的集合添加更多 Selected 属性并不感觉是正确的方法......
    • 您不需要将 IsSelected 添加到所有模型对象中,只需创建一个基类并从中继承...
    • 当然。我的观点是,我不确定演示文稿是否应该在模型中。模型不需要它 - 只是视图。
    • 好的,现在我明白你的意思了。就我个人而言,当我遵循 MVVM 时,我在 ViewModels(中间层)中使用 IsSelected 属性。在你的情况下,虽然这不是模型的问题,但我认为视图不应该负责条件选择逻辑。
    猜你喜欢
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多