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