Я думаю, вы можете использовать такой код
Storyboard.SetTargetName(startupAnimation1da, loadingWindow.Name);
Вместо
startupAnimation1.SetTargetName(startupAnimation1da, loadingWindow.Name);
Кроме того, я не думаю, что ваш код будет работать правильно, я думаю, это не будет делать анимацию. Потому что вы создали DoubleAnimation
, но не установили целевое свойство, которое нужно изменить. Вы можете использовать метод Storyboard.SetTargetProperty()
, чтобы установить его следующим образом:
Storyboard.SetTargetProperty(ANIMATION, PROPERTY);
И пример:
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath(Button.WidthProperty));
Ниже приведен пример использования Storyboard.SetTargetName()
и Storyboard.SetTargetProperty()
методов.
Это анимация изменения ширины кнопки.
Xaml:
<Window x:Class="WpfTestApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Button x:Name="AnimationButton" Height="34" Width="100" Content="Begin" Click="AnimationButton_Click"></Button>
</Window>
C#:
using System;
using System.Windows;
using System.Windows.Media.Animation;
using System.Windows.Controls;
namespace WpfTestApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void AnimationButton_Click(object sender, RoutedEventArgs e)
{
//Create the animaton
Storyboard storyboard = new Storyboard();
DoubleAnimation doubleAnimation = new DoubleAnimation
{
From = 100,
To = 300,
Duration = new Duration(new TimeSpan(0, 0, 1)),
AutoReverse = true,
RepeatBehavior = RepeatBehavior.Forever
};
storyboard.Children.Add(doubleAnimation);
//Set taeget name
Storyboard.SetTargetName(doubleAnimation, "AnimationButton");
//Set target property
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath(Button.WidthProperty));
//Begin the animaton
storyboard.Begin(AnimationButton);
}
}
}