Мне бы хотелось, чтобы прямоугольник мигал (с определенной частотой) в моем проекте Winui3 (на C++) в XAML, вот мой код в XAML:
<StackPanel>
<StackPanel.Resources>
<Storyboard x:Name = "Rear_Frame_Blink">
<DoubleAnimation
Storyboard.TargetName = "rec_rear"
Storyboard.TargetProperty = "Opacity"
From = "1.0" To = "0.0" Duration = "Automatic"
AutoReverse = "True" RepeatBehavior = "Forever">
</DoubleAnimation>
</Storyboard>
</StackPanel.Resources>
<Rectangle x:Name = "rec_rear" Loaded = "RearFrame_Start_blink" Width = "2275" Height = "480" Stroke = "Red" StrokeThickness = "12" Opacity = "0.9"/>
</StackPanel>
И я хочу, чтобы он запускал/переставал мигать программно на C++, с помощью функции RearFrame_Start_blink, с помощью Rear_Frame_Blink.begin(); Но это не сработает из-за такой ошибки: идентификатор C++ не определен в Rear_Frame_Blink. Может ли кто-нибудь помочь мне в этом? Большое спасибо!
Ваш код работает для меня так же, как пример анимации темы. Обратите внимание: C# Rear_Frame_Blink.Begin(); C++ Rear_Frame_Blink().Begin();
Спасибо, Ян, я использовал «Rear_Frame_Blink().Begin();» в моем коде, но я получил следующую ошибку, вы знаете, почему? Большое спасибо! winrt::impl::consume_Microsoft_UI_Xaml_Media_Animation_IStoryboard<winrt::Microsoft::UI::Xaml::Media::Animation::IStoryboard>::Begin’: функцию, возвращающую значение «auto», нельзя использовать прежде чем это будет определено
Я наконец решил эту проблему, добавив «#include «winrt/Microsoft.UI.Xaml.Media.Animation.h»» Все равно спасибо!
Подождите, вы написали это в вопросе «с такой ошибкой: идентификатор C++ не определен на Rear_Frame_Blink», но в комментариях вы написали другую ошибку: «функция, возвращающая «авто», не может быть использована, пока она не определена». Трудно диагностировать проблему, если предоставлена неверная информация.
После перестройки проекта ошибка «Идентификатор C++ не определен на Rear_Frame_Blink» исчезла. Не знаю почему, но само решилось. А после добавления «#include «winrt/Microsoft.UI.Xaml.Media.Animation.h» эта проблема решена: функцию, возвращающую «auto», нельзя использовать, пока она не определена». Вот и все.


У меня этот код работает так же, как пример анимации темы. Но обратите внимание: ссылаться на именованные ресурсы — это другое дело. Например, в C# Rear_Frame_Blink.Begin();, в C++ Rear_Frame_Blink().Begin();.
Что касается ошибок вида «consume_Something: функция, возвращающая «auto», нельзя использовать до ее определения»?, см. блог @RaymondChen Почему мой проект C++/WinRT получает ошибки вида «consume_Something: function» который возвращает «auto», нельзя использовать до его определения»?
Для нетерпеливых: проблема в том, что у вас отсутствует заголовочный файл. для интерфейса, который вы используете.
Пожалуйста, поделитесь кодом C++, поскольку именно здесь, по вашему мнению, и заключается проблема. Кроме того, xaml должно быть больше, чем просто то, чем вы поделились. Каков класс верхнего уровня, внутри которого находится StackPanel?