ListView数据窗口中的图像闪烁

时间:2016-10-14 07:15:59

标签: xaml windows-runtime uwp win-universal-app winrt-xaml

有人可以告诉我,我怎样才能避免Datatemplate中的图像闪烁?每次我通过绑定(MVVM模式)更改源代码时,ListViewItem中的图像都会闪烁。对于app中的其他图片,我在代码隐藏中使用了ImageOpened事件。但是当我有DataTemplate时,我无法使用。

修改

的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>

type Contact 实现了INotifyPropertyChanged。

EDIT2:

WriteableBitmap正在运行,但我有3个图像,缩放因子分别为100,200和400.它总是选择带有比例400的图像。当我使用普通绑定没有WriteableBitmap时,它采用比例为100的图像。

1 个答案:

答案 0 :(得分:0)

这里最好的解决方案是让您对Image控件进行子类化,覆盖Source属性并使用无闪烁流控制从一个图像到另一个图像的转换。在这里学习:https://mva.microsoft.com/en-US/training-courses/xaml-for-windows-10-controls-14482