silverlight - VisualStateManager 不执行任何操作 (silverlight)

标签 silverlight visualstatemanager

我正在使用 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>

当我将鼠标悬停在图像上时,没有任何反应。 当鼠标悬停在图像上时如何放大图像?

谢谢

最佳答案

VisualStateManager.VisualStateGroups 附加属性定义视觉状态集,但是组的名称和状态的名称只是名称,它们实际上并不启用它们自动描述的功能。

由控件中的代码决定何时处于特定状态,然后将该选择通知 VisualStateManager。您可以使用如下代码来做到这一点:-

VisualStateManager.GotoState(this, "MouseOver", true);

通常,您会通过各种控件事件收集诸如鼠标是否位于控件上方之类的信息,并使用一个中央 UpdateVisualState 函数来设置所有适当的状态。

关于silverlight - VisualStateManager 不执行任何操作 (silverlight),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3940257/

相关文章:

c# - 将 ObservableCollection 中的图钉绑定(bind)到 Bing Maps Control WP7

Silverlight:文本框垂直内容对齐 ="Center"

silverlight - 如何强制ActualWidth和ActualHeight更新(Silverlight)

c# - 在 VisualStateManager 中交换画笔

wpf - VisualStateManager 无法为 ThicknessAnimations 生成过渡

c# - 使用 Linq to SQL 自定义实现 DomainService

Silverlight:在分层数据模板中定义事件处理程序

c# - uwp 获取自定义媒体控件中视觉状态更改的通知

silverlight - 如何知道 Silverlight VisualStateManager.GoToState 转换何时完成?

c# - WPF 模板触发器和 visualStateManager 之间的区别