Не может разрешить TargetName - Silverlight4 C#

Я добираюсь, ошибка не Может разрешить TargetName grdGeneral. То, что я пытаюсь сделать, имеют исчезновение, функционируют, который принимает сетку и исчезает непрозрачность для обнуления. Мне обратились к этой функции MouseLeftButtonDown, и загружается после xaml и формы загрузился.

Вызов исчезновения:

private void imgNext_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            fadeOut(grdGeneral);            
        }

Исчезновение функционирует:

private void fadeOut(Grid pGrid)
        {
            Storyboard stb = new Storyboard();

            DoubleAnimation da = new DoubleAnimation();
            da.From = 1.0;
            da.To = 0.0;

            stb.Duration = new Duration(TimeSpan.FromSeconds(.75));
            stb.Children.Add(da);

            Storyboard.SetTargetName(da, pGrid.Name);
            Storyboard.SetTargetProperty(da, new PropertyPath(Grid.OpacityProperty));

            stb.Begin();
        }

Я был на горстке учебных сайтов, и мой код, кажется, выполняет тот же приказ. Я также был по этому stackoverflow вопросу перед высказыванием пересообщения. Тот вопрос должен иметь дело с mutlipages, и я просто пытаюсь запустить анимацию.

Отслеживание стека

System.InvalidOperationException was unhandled by user code
  Message=Cannot resolve TargetName grdGeneral.
  StackTrace:
       at MS.Internal.XcpImports.MethodEx(IntPtr ptr, String name, CValue[] cvData)
       at MS.Internal.XcpImports.MethodEx(DependencyObject obj, String name)
       at System.Windows.Media.Animation.Storyboard.Begin()
       at MeterTesting.QuarterReportGUI.fadeOut(Grid pGrid)
       at MeterTesting.QuarterReportGUI.imgNext_MouseLeftButtonDown(Object sender, MouseButtonEventArgs e)
       at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
       at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName)
  InnerException: 

8
задан Community 23 May 2017 в 11:50
поделиться

1 ответ

Вам действительно не следует пытаться кодировать свои раскадровки таким образом, если вам это совершенно не нужно. Как только ваша анимация станет немного сложной, она вас укусит.

Вместо этого вы должны сделать это в xaml, предпочтительно используя Blend. Попробуйте это в своем xaml:

<UserControl.Resources>
    <Storyboard x:Name="FadeGrid">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grdGeneral">
            <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
            <EasingDoubleKeyFrame KeyTime="0:0:0.7" Value="0"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</UserControl.Resources>

<Grid x:Name="grdGeneral" Background="White">
    <Image x:Name="imgNext" MouseLeftButtonDown="imgNext_MouseLeftButtonDown" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Source="/StoryboardInCode;component/Images/avatar.jpg"></Image>
</Grid>

Затем в своем коде вы должны вызвать его следующим образом:

private void imgNext_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        FadeGrid.Begin();
    }

Это должно дать вам то, что вы ищете.

Также было бы лучше использовать кнопку вместо изображения.

3
ответ дан 5 December 2019 в 18:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: