FlipView onItemShow 事件

FlipView onItemShow Event

我正在为 windows 10 开发一个应用程序,如下所示:

这是我的Class

public class ImgurPost
{
    public string title { get; set; }
    public Uri thumbnail { get; set; }
    public Uri fullimage { get; set; }
}

这是我的 Xaml

<DataTemplate x:Name="flipItem" x:DataType="vm:ImgurPost">
   <Grid>
      <Image Source="{Binding thumbnail}"/>         
      <TextBlock Text="{Binding title}" />
   </Grid>
</DataTemplate>
<FlipView ItemTemplate="{x:Bind flipItem}">
</FlipView>

FlipView.Itemsource 通过 c# 与 IncrementalSource 连接并且效果很好,显示了所有项目。

但我想要的是,当您翻到下一个项目时,我可以触发一个事件请求加载完整图像并替换缩略图仅在那个活动的 FlipViewItem 上,所以当应用程序加载时,它不会一次性下载所有全尺寸图像。

您可以使用事件 SelectionChanged 了解用户何时更改项目并添加您的逻辑来更改图像。

https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.primitives.selector.selectionchanged

更新:

有一些方法。

1.- 您可以在您的模型中使用 INotifyPropertyChanged 并仅更改包含 url 的 属性 的值,并在项目模板内与您的图像控件进行绑定

https://msdn.microsoft.com/en-us/library/windows/apps/mt269383.aspx

2.- 您可以使用项目模板选择器方法根据模型的某些值更改所有项目模板。

https://marcominerva.wordpress.com/2013/02/18/dynamically-choose-datatemplate-in-winrt/

之前的示例适用于 WinRT,但对 UWP 应用程序仍然有效

我认为如果您想直接更改图像源的值,这会很困难,但可以使用 VisualTreeHelper