Изображение мерцает в табличке данных ListView

#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. Срок действия ссылки истек, есть новое решение?