У меня есть набор Image
s в GridView, и изображения не могут быть загружены мгновенно при открытии страницы. Таким образом, чтобы создать более плавный переход, я пытаюсь использовать EventTrigger
в Image
анимировать непрозрачность от 0 до 1, когда изображение загружается, например так:EventTriggers на изображении
<GridView.ItemTemplate>
<DataTemplate>
<Border Background="{ThemeResource ButtonBackground}" HorizontalAlignment="Stretch" MaxWidth="300" MinWidth="200">
<Image Source="{Binding SmallUri}" Stretch="UniformToFill"
Opacity="0" ToolTipService.ToolTip="{Binding Author.Name}">
<Image.Triggers>
<EventTrigger RoutedEvent="Image.ImageOpened">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="00:00:00.25" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Image.Triggers>
</Image>
</Border>
</DataTemplate>
</GridView.ItemTemplate>
Но всякий раз, когда страница пытается загрузить, его с ошибкой:
Failed to assign to property 'Windows.UI.Xaml.EventTrigger.RoutedEvent'
Почему это не работает? Он также терпит неудачу, если я изменю свойство RoutedEvent на Loaded, FrameworkElement.Loaded, Image.Loaded или любое другое значение, о котором я мог думать. Я хотел бы получить решение, которое не связано с необходимостью создания пользовательского элемента управления/кода.
Значит ли '' на самом деле работает? В документации говорится: «Не устанавливайте атрибут RoutedEvent». OP также заявляет, что «он также терпит неудачу, если я изменил свойство RoutedEvent на Loaded». –
Clemens
@ Clemens, да, вы правы, установлен ли «RoutedEvent =» Image.Loaded «' здесь или нет, эта раскадровка будет запущена при загрузке этой фреймворка, я воспроизвел проблему OP и нашел, когда изменил свойство RoutedEvent на Loaded , исключение: «Оценка методов на COM-объектах в этом контексте не поддерживается». Если указать имя и заставить целевую систему раскадровки, это имя решит эту проблему. –
@Clemens, это работает, и это означает, что в UWP вы можете либо установить событие «Loaded» на «RoutedEvent», либо оставить этот «RoutedEvent», они будут одинаковыми. –