0

これは、以前の質問 ( UWP Problems Setting GridView Items source using x:Bind ) のフォローアップです。

その場合、Mirosoft のデータ仮想化サンプルのランダム アクセス ファイル データ ソースを使用していましたが、グリッドにはデータが取り込まれませんでした。問題は、プロパティ変更イベントを発生させていないことでした。グリッドがうまく機能するようになりました。

私の問題は、グリッド ビューの代わりに、フリップ ビュー コントロールでデータ ソースを使用しようとしていることです。データ ソースは初期化され、プロパティの変更通知が発生しますが、フリップ ビューには何も表示されません。

フリップ ビューで仮想コレクションのデータを表示できますか?

ここに私のモデルのコードがあります:

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;
    }
}

XAML での私の FlipView:

    <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>

ありがとう、アドバイスをいただければ幸いです。

4

0 に答える 0