c# - 如何在 C# 中设置 Storyboard.TargetProperty?

标签 c# wpf animation storyboard

我正在用 C# 开发 wpf 应用程序。以下 xaml 代码对我来说工作正常。

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="VisualStateGroup">
        <VisualState x:Name="DefaultVisualState">
            <Storyboard/>
        </VisualState>
        <VisualState x:Name="FocusVisualState">
            <Storyboard>
                <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="CircleEllipse1">
                    <EasingColorKeyFrame KeyTime="0" Value="#FF0004FF"/>
                </ColorAnimationUsingKeyFrames>
                <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Background).(SolidColorBrush.Color)" Storyboard.TargetName="TextBlock1">
                    <EasingColorKeyFrame KeyTime="0" Value="#FFBCB0B0"/>
                </ColorAnimationUsingKeyFrames>
            </Storyboard>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

我用 C# 编写的相同代码

EasingColorKeyFrame easingColorKeyFrameObj = new EasingColorKeyFrame();
easingColorKeyFrameObj.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(1));
easingColorKeyFrameObj.Value = Colors.Red;
ColorAnimationUsingKeyFrames colorAnimationUsingKeyFramesObj = new ColorAnimationUsingKeyFrames();
colorAnimationUsingKeyFramesObj.KeyFrames.Add(easingColorKeyFrameObj);
Storyboard.SetTargetName(colorAnimationUsingKeyFramesObj, "CircleEllipse1");
Storyboard.SetTargetProperty(
    colorAnimationUsingKeyFramesObj, new PropertyPath("Color"));

Storyboard myStoryboard = new Storyboard();
myStoryboard.Children.Add(colorAnimationUsingKeyFramesObj);

myStoryboard.Begin(this, true);

在上面的代码中,我应该如何设置 Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"Storyboard.TargetProperty="(TextElement.Background) .(SolidColorBrush.Color)" 在 C# 中

最佳答案

需要指定为字符串

private void AnimateColor(string ellipseName, Color ellipseColor, string textBlockName, Color textBlockColor)
            {
                EasingColorKeyFrame easingColorKeyFrameEllipseObj = new EasingColorKeyFrame();
                easingColorKeyFrameEllipseObj.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(12));
                easingColorKeyFrameEllipseObj.Value = ellipseColor;

                ColorAnimationUsingKeyFrames colorAnimationUsingKeyFramesEllipseObj = new ColorAnimationUsingKeyFrames();
                Storyboard.SetTargetName(colorAnimationUsingKeyFramesEllipseObj, ellipseName);
                Storyboard.SetTargetProperty(
                    colorAnimationUsingKeyFramesEllipseObj, new PropertyPath("(Shape.Fill).(SolidColorBrush.Color)"));
                colorAnimationUsingKeyFramesEllipseObj.KeyFrames.Add(easingColorKeyFrameEllipseObj);

                EasingColorKeyFrame easingColorKeyFrameTextBlockObj = new EasingColorKeyFrame();
                easingColorKeyFrameTextBlockObj.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(12));
                easingColorKeyFrameTextBlockObj.Value = textBlockColor;

                ColorAnimationUsingKeyFrames colorAnimationUsingKeyFramesTextBlockObj = new ColorAnimationUsingKeyFrames();
                Storyboard.SetTargetName(colorAnimationUsingKeyFramesTextBlockObj, textBlockName);
                Storyboard.SetTargetProperty(
                    colorAnimationUsingKeyFramesTextBlockObj, new PropertyPath("(TextElement.Background).(SolidColorBrush.Color)"));
                colorAnimationUsingKeyFramesTextBlockObj.KeyFrames.Add(easingColorKeyFrameTextBlockObj);


                Storyboard storyboard = new Storyboard();

                storyboard.Children.Add(colorAnimationUsingKeyFramesEllipseObj);
                storyboard.Children.Add(colorAnimationUsingKeyFramesTextBlockObj);

                storyboard.Begin(this, true);
            }

关于c# - 如何在 C# 中设置 Storyboard.TargetProperty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13217094/

相关文章:

c# - 为什么 Dispatcher.Invoke 不触发 UI 更新?

java - 动画 View 超出父容器android

ios - CCActionSequence 同时运行所有 Action

c# - IIS 覆盖 ASP.NET 中的自定义 404 错误页面

c# - Visual Studio 2015 调试输出显示 "Application Insights Telemetry: {"名称“:"Microsoft.ApplicationInsights.XXX.RemoteDependency"

c# - 在关闭表格时开始新表格。 C#

c# - DataGrid 虚拟化绑定(bind)到带有 GroupDescriptions 的 ListCollectionView

java - Java 和 C# 上的 SHA-1 哈希

c# - 如何在绑定(bind)到 ObservableCollection 时禁用 DataGrid 中的单元格

android - 带有 setStartDelay 调用 onAnimationStart 的 AnimatorSet