我正在使用studio 2010和silverlight 4构建一个自定义控件。我正在尝试使用可视化状态管理器。
使用以下xml:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:SilverView">
<Style TargetType="controls:ScaleImage">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="controls:ScaleImage">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<VisualTransition To="MouseOver"
GeneratedDuration="0:0:.5"/>
<VisualTransition To="Normal"
GeneratedDuration="0:0:.5"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal">
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="img"
Storyboard.TargetProperty="Width"
From="50" To="100"/>
</Storyboard>
</VisualState>
<VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="img"
Storyboard.TargetProperty="Width"
From="50" To="100"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Image Name="img" Width="50">
<Image.RenderTransform>
<ScaleTransform x:Name="scale"/>
</Image.RenderTransform>
</Image>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>当我将鼠标移到图像上时,没有任何反应。当鼠标悬停在图像上时,如何使图像放大?
谢谢
发布于 2010-10-15 16:01:33
VisualStateManager.VisualStateGroups attached属性定义可视状态集但是,组的名称和状态的名称只是名称,它们实际上并不启用它们自动描述的功能。
这取决于您控件中的代码来决定它何时处于特定状态,然后将该选择通知VisualStateManager。你可以用下面这样的代码来实现:
VisualStateManager.GotoState(this, "MouseOver", true);通常,您将通过各种控件事件收集信息,如鼠标是否在控件上,并具有设置所有适当状态的中央UpdateVisualState函数。
发布于 2010-10-15 15:57:34
在上面的XAML中,您只定义了状态组和名称类似于"MouseOver“的状态。您实际上并没有导致状态发生变化,因为它们显然与任何事件都没有关联。
如果还没有,请尝试使用GoToState行为来触发控件的状态更改。
您是否还有其他触发状态更改的代码或XML?
https://stackoverflow.com/questions/3940257
复制相似问题