Я разрабатываю приложение для Windows 8 Store. Я создал следующий пользовательский элемент управления:
<UserControl x:Class="RTV_W8.AnimatedImage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:RTV_W8" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <UserControl.Resources> <!-- Animates the rectangle opacity. --> <Storyboard x:Name="ContainerGridStoryboard"> <DoubleAnimation Storyboard.TargetName="MainGrid" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:5" AutoReverse="False"> </DoubleAnimation> </Storyboard> </UserControl.Resources> <Grid x:Name="MainGrid" CacheMode="BitmapCache"> <Image Stretch="UniformToFill" x:Name="PictureImage"/> </Grid> </UserControl>
со следующим cs файлом (только частично отображаемым здесь)
public AnimatedImage()
{
this.InitializeComponent();
this.Loaded += AnimatedImage_Loaded;
this.PictureImage.Loaded += PictureImage_Loaded;
}
void AnimatedImage_Loaded(object sender, RoutedEventArgs e)
{
this.ContainerGridStoryboard.Begin();
}
моя проблема заключается в том, что раскадровка не запускается при загрузке изображения. Этот пользовательский элемент управления используется внутри другого пользовательского контроля. Я попробовал несколько вариантов, пытаясь заставить анимацию работать, ни одна из них не работала. Я хочу, чтобы пользовательский элемент управления отображал его непрозрачность в представлении вместо того, чтобы просто извиваться. Хотя я могу видеть через точки останова, что ContainerGridStoryboard.Begin(); выполнено ничего не происходит на экране
EDIT: в другом usercontrol ведьма позже используется в datatemplate, если я применяю раскадровку на главной сетке, она работает, usercontrol становится анимированной. Но если я применяю его во второй сетке (содержащейся в основной сетке) или любом другом элементе, анимация не работает. Вот почему я создал анимацию в первую очередь.
Я только что решил проблему. Таким образом, мой пользовательский контроль находился внутри пары сеток, внутри другого пользовательского контроля, внутри шаблона данных внутри gridview. Проблема заключалась в том, что основная сетка, содержащая анимацию, была установлена с помощью CacheMode = "BitmapCache". Когда я удалил это свойство, изображения исчезли.
Когда я устанавливаю источник изображения и вставляю UserControl на страницу, изображение исчезает, как и ожидалось.