首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VisualStateManager什么也不做(silverlight)

VisualStateManager什么也不做(silverlight)
EN

Stack Overflow用户
提问于 2010-10-15 15:26:43
回答 2查看 1.2K关注 0票数 2

我正在使用studio 2010和silverlight 4构建一个自定义控件。我正在尝试使用可视化状态管理器。

使用以下xml:

代码语言:javascript
复制
<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>

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

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-15 16:01:33

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

这取决于您控件中的代码来决定它何时处于特定状态,然后将该选择通知VisualStateManager。你可以用下面这样的代码来实现:

代码语言:javascript
复制
VisualStateManager.GotoState(this, "MouseOver", true);

通常,您将通过各种控件事件收集信息,如鼠标是否在控件上,并具有设置所有适当状态的中央UpdateVisualState函数。

票数 4
EN

Stack Overflow用户

发布于 2010-10-15 15:57:34

在上面的XAML中,您只定义了状态组和名称类似于"MouseOver“的状态。您实际上并没有导致状态发生变化,因为它们显然与任何事件都没有关联。

如果还没有,请尝试使用GoToState行为来触发控件的状态更改。

您是否还有其他触发状态更改的代码或XML?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3940257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档