У меня была очень похожая проблема.в основном, (я думаю), что вы пытаетесь оживить до того, как визуальное дерево будет полностью создано.Я решил это, используя два метода.
Во-первых, я поднимаю свое одушевленное событие (которое запускает Триггер в моем xaml) внутри Dispatcher.BeginInvoke(...
), используя приоритет ApplicationIdle
(таким образом, мыпочти уверен, что визуальное дерево было создано) также, я вызываю UpdateLayout()
перед тем, как вызвать событие.
секунду, я обращаюсь к объекту, например так: var child = this.GetTemplatedChild("MyCanvas")
, чтобы убедиться, что холст действительнотам, прежде чем пытаться поднять мое событие.(не уверен, что это помогло, но исключение исчезло после того, как я добавил это) вот мой пример кода:
this.Dispatcher.BeginInvoke(new Action(() =>
{
this.UpdateLayout();
if (this.Visibility == System.Windows.Visibility.Visible)
{
var bzyCanvas = this.GetTemplateChild("BusyCanvas");
if (bzyCanvas != null)
this.RaiseEvent(new RoutedEventArgs(AnimationStarted));
}
}),System.Windows.Threading.DispatcherPriority.ApplicationIdle);