【问题标题】:FlipView onItemShow EventFlipView onItemShow 事件
【发布时间】:2016-02-22 19:53:10
【问题描述】:

我正在为 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 上的缩略图 因此,当应用程序加载时,它不会一次性下载所有全尺寸图像。

【问题讨论】:

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


    【解决方案1】:

    您可以使用事件 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

    【讨论】:

    • 我正在尝试使用它,但问题是我找不到在 Flipview 的 selectedItemcontainer 内添加或更改控件的方法,因为 Flipview.containerfromindex(FlipView.selecteindex) 返回离开 null 否不管怎样。
    • 我用模板选择器方法得到了谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    相关资源
    最近更新 更多