Не удается получить панель Grid для перевода Transform XProperty

#c# #.net #wpf

#c# #.net #wpf

Вопрос:

Я новичок в WPF, и я получаю ошибку каждый раз, когда я запускаю свой код

 DoubleAnimation da = new DoubleAnimation();
TranslateTransform tt = (OPMenuScreen.RenderTransform as TransformGroup).Children[0] as TranslateTransform;

da.By = -250;
tt.BeginAnimation(TranslateTransform.XProperty, da);
  

Почему я не могу заставить OPMenuScreen перейти к -250 Xproperty для TranslateTransform?

Комментарии:

1. @Бен Робинсон: Я получаю эту ошибку — ссылка на объект не установлена для экземпляра объекта — в строке TranslateTransform tt

2. Как предполагает @BenRobinson, это, скорее всего, потому, что OPMenuScreen.RenderTransform это не TransformGroup экземпляр. Каково значение этого свойства при пошаговом выполнении кода?

3. @Steve По словам Бенробинсона, у меня есть null дочерних элементов. Но как мне создать дочерние элементы?

4.@Corbee Я не думаю, что это Children может быть null, хотя я не уверен. Смотрите мой ответ для возможного решения

Ответ №1:

Хорошо, тогда, если вы получаете исключение null ref, то это, вероятно, вызвано этой строкой

 TranslateTransform tt = (OPMenuScreen.RenderTransform as TransformGroup).Children[0] as TranslateTransform;
  

Что, вероятно, означает, что элемент 0 свойства Children не существует, поскольку значение Children равно null.

Комментарии:

1. : Если это так, как мне назначить OPMenuScreen для TranslateTransform, чтобы он мог анимировать уменьшение на -250 при каждом вызове метода?

Ответ №2:

Следуя комментариям…

Я не уверен, что Children свойство равно null в вашем примере — я думаю, более вероятно, что либо ваше RenderTransform значение равно null, либо оно не является экземпляром TransformGroup . В любом случае, вам просто нужно убедиться, что в вашем XAML указано следующее:

Примечание: Я понятия не имею, что это за тип OPMenuScreen , поэтому я буду использовать Control для примера

 <Control ...>
    <Control.RenderTransform>
        <TransformGroup>
            <TranslateTransform />
        </TransformGroup>
    </Control.RenderTransform>
</Control>
  

Комментарии:

1. Ваше право! Я понятия не имел, что требуется добавление этих кодов в XAML. Спасибо!