#xaml #windows-runtime #uwp #win-universal-app #winrt-xaml
#xaml #windows-среда выполнения #uwp #win-universal-app #winrt-xaml
Вопрос:
может кто-нибудь сказать мне, как я могу избежать мерцания изображения в Datatemplate? Каждый раз, когда я меняю источник с помощью привязки (шаблон MVVM), изображение в ListViewItem мерцает. Для других изображений в приложении я использовал событие ImageOpened в code-behind. Но я не могу быть использован, когда у меня есть DataTemplate.
Редактировать:
Табличка данных:
<DataTemplate x:Key="ContactItemDataTemplate" x:DataType="contactData:Contact">
<Grid MinHeight="48">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Grid.Column="0" Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" x:Name="MainImage" Source="{x:Bind ImageStatusUri, Mode=OneWay}" Margin="0,8,12,8">
</Image>
<TextBlock Grid.Column="1" Text="{x:Bind Nickname, Mode=OneWay}" Foreground="Black" TextAlignment="Center"
VerticalAlignment="Center" FontSize="15" HorizontalAlignment="Left"/>
</Grid>
<Rectangle Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" StrokeThickness="0.4" Height="0.4"
VerticalAlignment="Bottom" HorizontalAlignment="Stretch" Stroke="#D1D3D4"/>
</Grid>
</DataTemplate>
тип Contact реализует INotifyPropertyChanged .
ПРАВКА2:
WriteableBitmap работает, но у меня есть 3 изображения с коэффициентами масштабирования 100, 200 и 400. Он всегда выбирает изображение с масштабом 400. Когда я использую обычную привязку без WriteableBitmap, он принимает изображение с масштабом 100.
Комментарии:
1. Пожалуйста, добавьте немного кода, чтобы мы могли его проверить.
2. Я добавил некоторый код.
Ответ №1:
Лучшим решением здесь является подкласс элемента управления Image, переопределяющий свойство Source и управляющий переходом от одного изображения к другому с помощью потока без мерцания. Узнайте здесь: https://mva.microsoft.com/en-US/training-courses/xaml-for-windows-10-controls-14482
Комментарии:
1. Срок действия ссылки истек, есть новое решение?