【问题标题】:How to set Storyboard.TargetProperty in C#?如何在 C# 中设置 Storyboard.TargetProperty?
【发布时间】:2012-10-24 09:39:47
【问题描述】:

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

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

【问题讨论】:

    标签: c# wpf animation storyboard


    【解决方案1】:

    您需要将其指定为字符串

    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);
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-07
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 2021-09-25
      • 2016-12-01
      相关资源
      最近更新 更多