FlipView onItemShow活动

时间:2016-02-22 19:53:11

标签: c# xaml wpf-controls win-universal-app flipview

我正在开发适用于Windows 10的应用程序,如下所示:

这是我的班级

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上替换缩略图所以当应用程序加载时,它不会一次性下载所有全尺寸图像。

1 个答案:

答案 0 :(得分:0)

您可以使用事件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.-您可以使用项目模板选择器方法根据模型的某些值更改所有ItemTemplate。

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

之前的示例是针对WinRT的,但仍然适用于UWP应用

我认为如果你想直接改变图像源的值,那将很难,但可以使用VisualTreeHelper