【发布时间】:2011-10-14 06:46:15
【问题描述】:
我正在尝试在 Silverlight 中创建模板化/自定义控件。
基本控件可以是System.Windows.Controls.Button。该按钮具有以下视觉状态:
<vsm:VisualStateManager.VisualStateGroups>
<!--Define the states for the common states. The states in a
VisualStateGroup are mutually exclusive to each other.-->
<vsm:VisualStateGroup x:Name="CommonStates">
<!--Define the VisualStates in this VistualStateGroup.-->
<vsm:VisualState x:Name="Normal"/>
<vsm:VisualState x:Name="MouseOver" />
<vsm:VisualState x:Name="Pressed" />
<vsm:VisualState x:Name="Disabled" />
</vsm:VisualStateGroup>
<!--Define the states for the focus states. The states in a
VisualStateGroup are mutually exclusive to each other.-->
<vsm:VisualStateGroup x:Name="FocusStates">
<!--Define the VisualStates in this VistualStateGroup.-->
<vsm:VisualState x:Name="Focused" />
<vsm:VisualState x:Name="Unfocused" />
</vsm:VisualStateGroup>
</vsm:VisualStateManager.VisualStateGroups>
我的自定义控件需要另一个状态,MouseButtonUp(MouseButtonDown 可以用预定义的Pressed 状态表示)。在这里,MouseButtonUp 状态默认会被解释为MouseOver 状态,但我想要MouseButtonUp 状态
行为与 MouseOver 状态不同。
如何添加这个MouseButtonUp 视觉状态? (MouseButtonUp 状态只存在于用户释放鼠标之后和用户开始移动之前。
顺便说一句:我应该使用自定义控件还是用户控件?我一直对这两个感到非常困惑。似乎它们在很多情况下都可以工作。
非常感谢。
更新:一旦我们添加了这个 MouseButtonUp 状态,我就可以进行如下视觉转换:
<vsm:VisualTransition From="Pressed" To="MouseButtonUp" GeneratedDuration="0:0:5" />
或者:
<vsm:VisualTransition From="MouseButtonUp" To="MouseOver" GeneratedDuration="0:0:5" />
【问题讨论】:
标签: silverlight custom-controls controltemplate visualstates