代码之家  ›  专栏  ›  技术社区  ›  Andrew Shepherd

WPF:停止或反转列表框中的选择更改

  •  6
  • Andrew Shepherd  · 技术社区  · 15 年前

    想象一下:您有一个主子窗口,它由一个项目列表(主窗口)和一组控件组成,您可以在其中编辑当前选定的项目(子窗口)。子窗口有“应用”和“取消”按钮。

    用户开始编辑值。在按下“应用”按钮之前,他会更改选择。

    应用程序将显示一条消息“将更改应用于当前项?”,按钮为“是”、“否”和“取消”。 如果用户按“取消”,则更改当前选择的尝试应失败。

    “currentSelection”项是数据绑定的。

    我想我可以在 CurrentSelection 财产。如果用户选择“取消”,我只保留 当前选择 按原样,然后 PropertyChanged 通知事件,通知窗体更新回旧的选定项。控件正在忽略此通知事件。(这很有意义,控件说“我知道当前选择已更改”。我刚换了它!”)

    有什么解决办法吗?总之,控件尝试更改绑定 SelectedItem ,我想告诉它“不,你现在不能更改所选项目”。

    3 回复  |  直到 9 年前
        1
  •  3
  •   Community    7 年前

    要做肯特·布加德指出的事情,请参考这个回复。

    How to stop a WPF binding from ignoring the PropertyChanged event that it caused?

        2
  •  1
  •   Burt    15 年前

    这听起来像是在寻找纪念品图案:

    http://en.wikipedia.org/wiki/Memento_pattern

    希望这有帮助。

        3
  •  1
  •   Tim Cooper    13 年前

    只是一个没有测试过的想法:尝试在单独的消息中引发属性更改事件。列表可能有一个锁存器,可以在更改属性值时忽略任何通知。如果您发送包含通知的单独消息,则应该重置闩锁,并对其进行处理。