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:停止或反转列表框中的选择更改的主要内容,如果未能解决你的问题,请参考以下文章