我正在为ListBox创建一个自定义控件模板,我对视觉状态有困难。使用VisualState MouseOver时,它会影响包括所选项目在内的所有项目,我希望这些项目具有单独的样式。
在Metro中,有SelectedPointerOver,在WPF或其他替代方案中是否有相应的东西?
修改:
例如,所有项目最初都有黑色前景。
选择一个项目时,其前景变为白色(未选中的项目保持黑色前景)。
现在,当我将鼠标移动到非选定项目时,我希望它的前景变为蓝色,当我将鼠标移动到所选项目时,我会希望它的前景变为红色。
答案 0 :(得分:1)
据我所知,在WPF中没有相应的状态。
WPF ListBoxItem在组Unselected
中的状态为Selected
,SelectedUnfocused
和SelectionStates
,状态为Normal
,MouseOver
和{{组Disabled
中的1}}。每组中的国家是相互排斥的,但来自不同群体的国家可以同时进行。例如,ListBoxItem可以同时处于状态CommonStates
和Selected
。
由控制模板决定是否考虑了这一事实。例如,它可以在选中时用不同的背景画笔填充项目,并在鼠标悬停在项目上时绘制外边框。重要的是,存在同时可见的独立可视化,因为相关状态是独立的并且可以同时被采用。当选定的列表项看起来没有被选中时,用户通常会感到有点困惑,因为他将鼠标移到该项上。
编辑 - 下面的ListBox示例。也许用Triggers而不是Visual States可以更轻松地完成。
MouseOver