首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CollectionView RemainingItemsThreshholdReached命令出错

CollectionView RemainingItemsThreshholdReached命令出错
EN

Stack Overflow用户
提问于 2020-02-02 16:41:59
回答 1查看 461关注 0票数 1

我在我的应用程序中使用Prism MVVM。下面是我的XAML代码

代码语言:javascript
复制
 IsRefreshing="{Binding IsRefreshing}"
                 Command="{Binding RefreshCommand}">

        <CollectionView ItemsSource="{Binding Images}"
                        RemainingItemsThreshold="1"
                        RemainingItemsThresholdReachedCommand="{Binding UpdateImagesCommand}">
        <CollectionView.ItemsLayout>
            <GridItemsLayout Orientation="Vertical"
                             Span="3"/>
        </CollectionView.ItemsLayout>
        <CollectionView.ItemTemplate>
            <DataTemplate>
                <Grid Padding="2">
                    <Grid.RowDefinitions>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>
                <ff:CachedImage 
                    Grid.Row="0"
                    Grid.Column="0"
                    HorizontalOptions="Center"
                    VerticalOptions="Center"
                    Aspect="AspectFill"
                    Source="{Binding Source, Mode=OneWay}">
                    <ff:CachedImage.Transformations>
                            <ffTransformations:CropTransformation />
                        </ff:CachedImage.Transformations>
                </ff:CachedImage>
                </Grid>
            </DataTemplate>
        </CollectionView.ItemTemplate>
    </CollectionView>
    </RefreshView>

正如您在这里看到的,我有值为"1“的参数RemainingItemsThreshold,并将anUpdateImagesCommand绑定到RemainingItemsThresholdReachedCommand

以下是此xaml页面的视图模型中的代码的一部分

代码语言:javascript
复制
private ObservableCollection _images;
public ObservableCollection Images
{
get { return _images; }
set { SetProperty(ref _images, value); }
}
private DelegateCommand _refreshCommand;
public DelegateCommand RefreshCommand =>
_refreshCommand ?? (_refreshCommand = new DelegateCommand(ExecuteRefreshCommand));
 private DelegateCommand _updateImagesCommand;
    public DelegateCommand UpdateImagesCommand =>
        _updateImagesCommand ?? (_updateImagesCommand = new DelegateCommand(ExecuteUpdateImagesCommand));
void ExecuteUpdateImagesCommand()
{
//Image im = new Image();
//im.Source = "Huayra3.jpg";
//Image im7 = new Image();
//im7.Source = "Huayra1.jpg";
 //Images.Add(im7);
        //Images.Add(im7);
        //Images.Add(im);
        //Images.Add(im);
        //Images.Add(im);
        //Images.Add(im);
    }
void ExecuteRefreshCommand()
{
// refresh posts feed command
IsRefreshing = false;
}

public AccountPageViewModel(INavigationService navigationService, IUserDataService userDataService) :
base(navigationService)
{
_userDataService = userDataService;
CurrentUser = userDataService.CurrentUser;
if (String.IsNullOrEmpty(this.CurrentUser.ImagePath))
        {
            this.CurrentUser.ImagePath = "user_avatar.jpg";     
        }

        Images = new ObservableCollection<Image>();

        Image im = new Image();
        im.Source = "Huayra3.jpg";
        Images.Add(im);
        Image im1 = new Image();
        im1.Source = "Huayra1.jpg";
        Images.Add(im1);
        Image im2 = new Image();
        im2.Source = "Huayra4.jpg";
        Images.Add(im2);
        Image im3 = new Image();
        im3.Source = "Huayra3.jpg";
        Images.Add(im3);
        Image im4 = new Image();
        im4.Source = "Huayra1.jpg";
        Images.Add(im4);
        Image im5 = new Image();
        im5.Source = "Huayra4.jpg";
        Images.Add(im5);
        Image im6 = new Image();
        im6.Source = "Huayra3.jpg";
        Images.Add(im6);
        Image im7 = new Image();
        im7.Source = "Huayra1.jpg";
        Images.Add(im7);
        Images.Add(im7);

        Images.Add(im7);
        Images.Add(im7);
        Images.Add(im7);
        Images.Add(im7);
        Images.Add(im7);
        Images.Add(im);


        //Images.Add(im);
        //Images.Add(im);

    }

如您所见,在我的VIewModel构造函数中,我编写了一些值并将其添加到列表中。我阅读了微软关于CollectionView的文档,我知道只有当到达RemainingItemsThreshold时,UpdateImagesCommand才会执行。但是当我导航到这个页面时,当我在选项卡式页面中的页面之间随机导航时,ExecuteUpdateImagesCommand()就会被调用。这不应该是这样的,但我不知道为什么会发生这种情况。请问smbd能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2020-04-29 02:47:24

我找到了另一种方法来解决这个问题。我可以使用IsActive的PRISM属性来理解这个页面就是我所需要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60024485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档