#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. Спасибо!