Член 'Storyboard.SetTargetName (DependencyObject, string)' недоступен со ссылкой на экземпляр; вместо этого укажите имя типа - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь создать анимацию запуска для моего приложения WPF. И я получаю следующее сообщение:

ошибка

И это мой текущий код: код

1 Ответ

0 голосов
/ 25 марта 2020

Я думаю, вы можете использовать такой код

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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...