Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.ios MvxBindableCollectionViewSource的实现_Xamarin.ios_Xamarin_Mvvmcross - Fatal编程技术网

Xamarin.ios MvxBindableCollectionViewSource的实现

Xamarin.ios MvxBindableCollectionViewSource的实现,xamarin.ios,xamarin,mvvmcross,Xamarin.ios,Xamarin,Mvvmcross,我是Mvvmcross框架的新手,目前正在探索它的iOS部分(ohh,也是iOS开发的新手,可以为我的现状画一幅美丽的图画^^)。我正在使用vNext版本 我找到了对UICollectionViewController实现的引用(MvxTouchCollectionViewController和MvxBindableCollectionViewSource),但这些类似乎只是未来实现的框架(抽象类,至少缺少一种MvxSimpleBindableCollectionViewSource)。我还没有

我是Mvvmcross框架的新手,目前正在探索它的iOS部分(ohh,也是iOS开发的新手,可以为我的现状画一幅美丽的图画^^)。我正在使用vNext版本

我找到了对UICollectionViewController实现的引用(MvxTouchCollectionViewController和MvxBindableCollectionViewSource),但这些类似乎只是未来实现的框架(抽象类,至少缺少一种MvxSimpleBindableCollectionViewSource)。我还没有找到使用此功能的示例。 我还发现了Stuart的一篇博文,其中假设他正在处理这个部分()

是否有人已经使用过这个部分,并且知道实现或使用示例


我看了Stuart在文章中提到的xaminar的前10分钟,看起来很有趣,对我来说这是一个很好的起点。

我在几个客户应用程序中使用了collection view controller,但我认为我没有发布任何使用它的开源示例

从本质上讲,collectionview的使用与tableview和单元格的使用非常相似,如中所示:

在vNext中,示例控制器可能如下所示:

public class MyCollectionView : BaseCollectionView<MyCollectionViewModel>
{
    private bool _needToCallViewDidLoadManually;

    public HubView (MvxShowViewModelRequest request)
        : base(request, new UICollectionViewFlowLayout (){
            ItemSize= new System.Drawing.SizeF (100, 100),
            MinimumInteritemSpacing = 20.0f,
            SectionInset = new UIEdgeInsets (10,50,20,50),
            ScrollDirection = UICollectionViewScrollDirection.Vertical,

        })
    {
        if (_needToCallViewDidLoadManually) {
            ViewDidLoad();
        }
    }

    public override void ViewDidLoad ()
    {
        if (ShowRequest == null) {
            _needToCallViewDidLoadManually = true;
            return;
        }

        base.ViewDidLoad ();

        _needToCallViewDidLoadManually = false;

        var source = new CollectionViewSource(CollectionView);

        this.AddBindings(
            new Dictionary<object, string>()
            {
            { source, "ItemsSource TheItems" }
        });

        CollectionView.Source = source;
        CollectionView.ReloadData();
    }

    public class CollectionViewSource : MvxBindableCollectionViewSource
    {
        public CollectionViewSource (UICollectionView collectionView)
            : base(collectionView, MyViewCell.Identifier)
        {
            collectionView.RegisterNibForCell(UINib.FromName(MyViewCell.Identifier, NSBundle.MainBundle), MyViewCell.Identifier);
        }
    }
}
公共类MyCollectionView:BaseCollectionView
{
私有布尔需要手动调用ViewDidLoad;
公共HubView(MvxShowViewModelRequest)
:base(请求,新UICollectionViewFlowLayout(){
ItemSize=新的System.Drawing.SizeF(100100),
最小材料间距=20.0f,
截面插图=新的导向插图(10,50,20,50),
ScrollDirection=UICollectionViewScrollDirection.Vertical,
})
{
如果(\u需要调用ViewDidLoadManually){
ViewDidLoad();
}
}
公共覆盖无效ViewDidLoad()
{
if(ShowRequest==null){
_needToCallViewDidLoadManually=true;
返回;
}
base.ViewDidLoad();
_needToCallViewDidLoadManually=false;
变量源=新的CollectionViewSource(CollectionView);
这是AddBindings(
新字典()
{
{source,“ItemsSource-items”}
});
CollectionView.Source=Source;
CollectionView.ReloadData();
}
公共类CollectionViewSource:MvxBindableCollectionViewSource
{
公共集合视图源(UICollectionView集合视图)
:base(collectionView,MyViewCell.Identifier)
{
registernbforcell(UINib.FromName(MyViewCell.Identifier,NSBundle.MainBundle),MyViewCell.Identifier);
}
}
}


如果您现在开始开发,那么您也可以考虑v3分支,它刚刚进入测试阶段。

我已经在几个客户应用程序中使用了collection view controller,但我认为我还没有发布任何使用它的开源示例

从本质上讲,collectionview的使用与tableview和单元格的使用非常相似,如中所示:

在vNext中,示例控制器可能如下所示:

public class MyCollectionView : BaseCollectionView<MyCollectionViewModel>
{
    private bool _needToCallViewDidLoadManually;

    public HubView (MvxShowViewModelRequest request)
        : base(request, new UICollectionViewFlowLayout (){
            ItemSize= new System.Drawing.SizeF (100, 100),
            MinimumInteritemSpacing = 20.0f,
            SectionInset = new UIEdgeInsets (10,50,20,50),
            ScrollDirection = UICollectionViewScrollDirection.Vertical,

        })
    {
        if (_needToCallViewDidLoadManually) {
            ViewDidLoad();
        }
    }

    public override void ViewDidLoad ()
    {
        if (ShowRequest == null) {
            _needToCallViewDidLoadManually = true;
            return;
        }

        base.ViewDidLoad ();

        _needToCallViewDidLoadManually = false;

        var source = new CollectionViewSource(CollectionView);

        this.AddBindings(
            new Dictionary<object, string>()
            {
            { source, "ItemsSource TheItems" }
        });

        CollectionView.Source = source;
        CollectionView.ReloadData();
    }

    public class CollectionViewSource : MvxBindableCollectionViewSource
    {
        public CollectionViewSource (UICollectionView collectionView)
            : base(collectionView, MyViewCell.Identifier)
        {
            collectionView.RegisterNibForCell(UINib.FromName(MyViewCell.Identifier, NSBundle.MainBundle), MyViewCell.Identifier);
        }
    }
}
公共类MyCollectionView:BaseCollectionView
{
私有布尔需要手动调用ViewDidLoad;
公共HubView(MvxShowViewModelRequest)
:base(请求,新UICollectionViewFlowLayout(){
ItemSize=新的System.Drawing.SizeF(100100),
最小材料间距=20.0f,
截面插图=新的导向插图(10,50,20,50),
ScrollDirection=UICollectionViewScrollDirection.Vertical,
})
{
如果(\u需要调用ViewDidLoadManually){
ViewDidLoad();
}
}
公共覆盖无效ViewDidLoad()
{
if(ShowRequest==null){
_needToCallViewDidLoadManually=true;
返回;
}
base.ViewDidLoad();
_needToCallViewDidLoadManually=false;
变量源=新的CollectionViewSource(CollectionView);
这是AddBindings(
新字典()
{
{source,“ItemsSource-items”}
});
CollectionView.Source=Source;
CollectionView.ReloadData();
}
公共类CollectionViewSource:MvxBindableCollectionViewSource
{
公共集合视图源(UICollectionView集合视图)
:base(collectionView,MyViewCell.Identifier)
{
registernbforcell(UINib.FromName(MyViewCell.Identifier,NSBundle.MainBundle),MyViewCell.Identifier);
}
}
}


如果您现在就开始开发,那么考虑v3分支可能也会使您受益,因为它刚刚进入测试阶段。

谢谢Stuart,您的解决方案非常简单。我将看看如何自定义视图,您的链接将非常有用!谢谢Stuart,你的解决方案非常简单。我将看看如何自定义视图,您的链接将非常有用!