gpt4 book ai didi

c# - 在 Silverlight 中,如何从模板中获取动画并通过 C# 代码使用它?

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:25 24 4
gpt4 key购买 nike

我有一个如下所示的控件模板:

<ControlTemplate x:Key="anchorButton" TargetType="Button">
<Grid x:Name="CommonGrid" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}">
<Image x:Name="CommonPic" Source="anchor.png" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Opacity="1"/>
<Image x:Name="CommonPicSelected" Source="anchorSelected.png" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Opacity="0"/>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused"/>
<VisualState x:Name="Unfocused"/>
</VisualStateGroup>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="CommonPic" Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="CommonPicSelected" Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed"/>
<VisualState x:Name="Disabled"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
</ControlTemplate>

在应用程序中,当我将鼠标悬停在按钮上时我可以更改图像,但我需要做的是通过代码设置它(我正在调用 javascript,当我将鼠标悬停在行上时,我的 Silverlight 中的相应点应突出显示应用程序)。

javascript 的链接已经完成:

 [ScriptableMember]
public void UpdateText(int result)
{
for (int i = 0; i < 4; i++)
{
ButtonBase button = (ButtonBase)VisualTreeHelper.GetChild(RegionCanvas, i);

if (button.DataContext.ToString().Equals("" + result))
{
HtmlPage.Window.Invoke("highlightRow", button.DataContext);
}
else
{
HtmlPage.Window.Invoke("unHighlightRow", button.DataContext);
}
}
}

我想在视觉状态下使用该动画集并在上面显示的代码中使用。那可能吗?如何?如果不是,是否有任何其他方法可以使其工作?

最佳答案

您只需在 XAML 上命名 StoryBoard:

<Storyboard x:Name="storyboard">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="CommonPic" Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="CommonPicSelected" Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>

然后您可以从代码中调用 Begin 方法:

storyboard.Begin();

关于c# - 在 Silverlight 中,如何从模板中获取动画并通过 C# 代码使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3268435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com