C#VisualStateManager - WPF中SelectedPointerOver的等价物(在Metro中)

时间:2012-06-28 05:58:56

标签: c# wpf microsoft-metro visualstatemanager

我正在为ListBox创建一个自定义控件模板,我对视觉状态有困难。使用VisualState MouseOver时,它会影响包括所选项目在内的所有项目,我希望这些项目具有单独的样式。

在Metro中,有SelectedPointerOver,在WPF或其他替代方案中是否有相应的东西?

修改:

例如,所有项目最初都有黑色前景。

选择一个项目时,其前景变为白色(未选中的项目保持黑色前景)。

现在,当我将鼠标移动到非选定项目时,我希望它的前景变为蓝色,当我将鼠标移动到所选项目时,我会希望它的前景变为红色。

1 个答案:

答案 0 :(得分:1)

据我所知,在WPF中没有相应的状态。

WPF ListBoxItem在组Unselected中的状态为SelectedSelectedUnfocusedSelectionStates,状态为NormalMouseOver和{{组Disabled中的1}}。每组中的国家是相互排斥的,但来自不同群体的国家可以同时进行。例如,ListBoxItem可以同时处于状态CommonStatesSelected

由控制模板决定是否考虑了这一事实。例如,它可以在选中时用不同的背景画笔填充项目,并在鼠标悬停在项目上时绘制外边框。重要的是,存在同时可见的独立可视化,因为相关状态是独立的并且可以同时被采用。当选定的列表项看起来没有被选中时,用户通常会感到有点困惑,因为他将鼠标移到该项上。

编辑 - 下面的ListBox示例。也许用Triggers而不是Visual States可以更轻松地完成。

MouseOver