Problems Setting FlipView Items source using Data Virtualization

江枫思渺然 提交于 2020-01-17 14:19:08

问题


This is a follow up from my previous question (UWP Problems Setting GridView Items source using x:Bind).

In that case I was using the random access file data source from Mirosoft's Data virtualization sample and the grid was never being populated. The problem there was that I was not raising the property changed event. The grid now works well.

My problem now is that instead of a grid view I am trying to use the data source in a flip view control. The data source does get initialized, the change property notification is raised but nothing is shown in the flip view.

Can a flip view display data from a virtual collection?

Here is my model's code:

public class PhotoFlipViewViewModel : Mvvm.ViewModelBase
{

    private FileDataSource _PicturesCollection;

    public FileDataSource PicturesCollection
    {
        get
        {
            return _PicturesCollection;
        }
        set
        {
            if (_PicturesCollection != value)
            {
                _PicturesCollection = value;
                RaisePropertyChanged(() => PicturesCollection);                   
            }
        }
    }

    public PhotoFlipViewViewModel()
    {
         initdata();
    }

     async void initdata()
    {
        StorageLibrary pictures = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Pictures);
        string path = pictures.SaveFolder.Path;

        var source = await FileDataSource.GetDataSoure(path);
        if (source.Count > 0)
        {
            PicturesCollection = source;
        }
    }

    public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary<string, object> suspensionState)
    {

        System.Diagnostics.Debug.WriteLine("PhotoFlipViewViewModel::OnNavigatedToAsync - event fired.");

        if ( SessionState.ContainsKey("SelectedPhotoObjectFromGrid"))
        {

        await Task.CompletedTask;
    }

    public override async Task OnNavigatedFromAsync(IDictionary<string, object> suspensionState, bool suspending)
    {
        if (suspending)
        {
        }
        await Task.CompletedTask;
    }

    public override async Task OnNavigatingFromAsync(NavigatingEventArgs args)
    {
        args.Cancel = false;
        await Task.CompletedTask;
    }
}

My FlipView in XAML:

    <FlipView x:Name="PhotoOuterFlipView"
                  BorderBrush="Black"
                  BorderThickness="1"
                  VerticalAlignment="Top"
                  HorizontalAlignment="Stretch"
                  ItemsSource="{x:Bind ViewModel.PicturesCollection, Mode=OneWay}"                     
                  ItemTemplate="{StaticResource PictureFlipViewTemplate}">
    <FlipView.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </FlipView.ItemsPanel>
</FlipView>

Thanks, any advice is appreciated.

来源:https://stackoverflow.com/questions/37350348/problems-setting-flipview-items-source-using-data-virtualization

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!