Xamarin.ios UICollectionview SelectItem以编程方式不更改背景

Xamarin.ios UICollectionview SelectItem以编程方式不更改背景,xamarin.ios,xamarin,uicollectionview,mvvmcross,Xamarin.ios,Xamarin,Uicollectionview,Mvvmcross,我有一个带有图像的UICollectionView。用户可以选择(多选)图像。当用户点击单个图像时,一切正常。所选背景视图可见,再次点击,正常图像可见 但我的问题是,我有一个选项供用户“全选”。在这种情况下,我希望以编程方式选择所有项目。代码如下: for (int i = 0; i < CollectionView.NumberOfItemsInSection(0); i++) { var ip = NSIndexPath.FromItemSection(i, 0); C

我有一个带有图像的UICollectionView。用户可以选择(多选)图像。当用户点击单个图像时,一切正常。所选背景视图可见,再次点击,正常图像可见

但我的问题是,我有一个选项供用户“全选”。在这种情况下,我希望以编程方式选择所有项目。代码如下:

for (int i = 0; i < CollectionView.NumberOfItemsInSection(0); i++)
{
    var ip = NSIndexPath.FromItemSection(i, 0);
    CollectionView.SelectItem(ip, false, UICollectionViewScrollPosition.None);
}
但用户界面不会更改为SelectedBackgroundView


有人能帮我吗?谢谢。

呼叫
SelectItem
不会导致显示更新;它只是更改
UICollectionViewCell
Selected
属性,从而更新集合视图中的选定索引集

我要做的是覆盖我的
UICollectionViewCell
实现的
Selected
属性,并在该点调整UI:

public class MyCell : UICollectionViewCell
{
    // ...
    public override bool Selected
    {
        get { return base.Selected; }
        set
        {
            base.Selected = value;
            // change the state of the selected background
            imageBackground.Image = LoadAnImage(value ? "BackgroundOn" : "BackgroundOff");
        }
    }
}
这种方式确保当单元格的选定状态发生更改时,用户界面在所有可能的点都会更新,无论是通过用户交互还是通过编程方式调用集合视图上的
SelectItem
DeselectItem


我个人不在单元格上使用
SelectedBackgroundView
属性(大多数情况下我自己进行分层),但您可能需要手动将该视图置于前面,使用类似的
Selected
属性覆盖。

我认为这不是处理选择的绝对正确的方法。您可以在此处阅读更多信息(导航到“管理选择和突出显示的视觉状态”部分),感谢您的回答。选定的属性对我起了作用。委托方法也是一个很好的解决方案,但在我的例子中并非如此。
public class MyCell : UICollectionViewCell
{
    // ...
    public override bool Selected
    {
        get { return base.Selected; }
        set
        {
            base.Selected = value;
            // change the state of the selected background
            imageBackground.Image = LoadAnImage(value ? "BackgroundOn" : "BackgroundOff");
        }
    }
}