【发布时间】:2013-07-08 10:57:27
【问题描述】:
好的,我不敢相信没有关于此的在线资源。我想做一件简单的事情,并在 ListBox 项目被选中并且其父 ListBox 失去焦点时更改其样式。
我们一直在为此使用VisualStateManager,但由于Selected、SelectedFocused 和Focused 状态存在重叠,因此在选择持有 ctrl 的项目时引入了一些错误(例如,错误的项目出现选择)。我决定使用Triggers 修复它,发现当ListBox 失去焦点时似乎无法触发。
我的问题是实现此行为的正确方法是什么,请不要说“覆盖 SystemColors”...
编辑:
好的,我对这两个答案都投了赞成票,但选择了 Viv 的回答,因为他的回答使它与原始 ListBox 完全一样,而我在鼠标悬停和我已经使用的其他样式方面没有问题。我已经看到Selector 附加属性的用法,但从未尝试过IsSelectionActive,它就像一个魅力。尽管VisualStateManager 在 WPF 中较新,但我建议您使用此类问题的触发器。我认为显然存在一些可以避免重叠状态的问题。
再次感谢 Viv 和 Richard 为我的问题提供了 2 种实施解决方案的绝佳示例。
【问题讨论】:
标签: c# wpf listbox styles focus