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

Posted

技术标签:

【中文标题】WPF:停止或反转列表框中的选择更改【英文标题】:WPF: Stopping or reversing a selection change in a list box 【发布时间】:2010-11-29 01:56:56 【问题描述】:

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

用户开始编辑值。然后他更改了选择,然后按下“应用”按钮。

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

“CurrentSelection”项是数据绑定的。

我想我可以在CurrentSelection 属性的“setter”部分处理这个问题。如果用户选择“取消”,我只需将CurrentSelection 项目保持原样,并触发PropertyChanged 通知事件来告诉表单更新回旧的选定项目。控件忽略此通知事件。 (这是有道理的,控件说“我知道当前选择已更改。我只是更改了它!”)

任何想法如何解决这个问题?总之,控件尝试更改绑定SelectedItem,我想告诉它“不,您现在不能更改此选定项”。

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

要按照 Kent Boogaart 所指出的去做,请参阅此回复..

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

【讨论】:

【参考方案3】:

这听起来像是在寻找纪念品模式:

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

希望这会有所帮助。

【讨论】:

以上是关于WPF:停止或反转列表框中的选择更改的主要内容,如果未能解决你的问题,请参考以下文章

想要文本框中的向上和向下箭头来更改列表框选择

WPF列表框中的不同用户控件

WPF 从列表框中拖动项目并放入文本框中

用于更改编辑帖子作者框中的作者列表的 WordPress 过滤器

WPF:尝试根据组合框中的选择更改可见性

从 WPF 中的列表框中获取复选框项目