有人可以告诉我,我怎样才能避免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的图像。
答案 0 :(得分:0)
这里最好的解决方案是让您对Image控件进行子类化,覆盖Source属性并使用无闪烁流控制从一个图像到另一个图像的转换。在这里学习:https://mva.microsoft.com/en-US/training-courses/xaml-for-windows-10-controls-14482