程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在 ViewModel 中获取 CollectionView 元素的索引?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在 ViewModel 中获取 CollectionView 元素的索引??

开发过程中遇到如何在 ViewModel 中获取 CollectionView 元素的索引?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在 ViewModel 中获取 CollectionView 元素的索引?的解决方法建议,希望对你解决如何在 ViewModel 中获取 CollectionView 元素的索引?有所启发或帮助;

我需要从我的 CollectionVIEw 中获取我点击的元素的索引并在 viewmodel 中使用它。我怎么才能得到它?我是 Xamarin 表单的新手

解决方法

对此有几个选择;我举几个例子:

  • item ViewModel 中的“设置一次”索引属性。在视图模型中创建列表时,还要为每个项目视图模型设置索引。 (例如,使用 for 循环和迭代器)。然后您可以绑定到该索引属性。缺点是列表中的更改不会反映在索引上。
            for (int i = 0; i < Parent.Childs.Count; i++)
            {
                String child = (String)Parent.Childs[i];
                Childs.Add(new ChildViewModel(i,child));
            }

        public class ChildViewModel
        {
            public int Index { get; set; }

            ...
        }
  • “实时”索引属性。将包含列表传递到 ViewModel 并添加一个带有返回“Parent.IndexOf(this)”的 getter 的属性。但是,当集合更改时,您需要某种方式为 Index 提高 PropertyChanged。使用 ObservableCollection 并订阅 CollectionItemsChanged 将是实现这一目标的一种方法。
            foreach (var item in Parent.Childs)
            {
                Childs.Add(new ChildViewModel(Parent.Childs,child));
            }

        public class ChildViewModel
        {
            public int Index { get; } => Parent.IndexOf(this);

            ...

            public ChildViewModel(IList<Child> parent)
            {
                if (parent is INotifyCollectionChanged p)
                    p.CollectionChanged += ParentCollectionChanged;
            }

            private void ParentCollectionChanged(object sender,NotifyCollectionChangedEventArgs E)
            {
                NotifyPropertyChanged(nameof(IndeX));
            }
        }
  • 绑定 item 并使用 ValueConverter,将 list 作为转换器参数。再次使用 IndexOf(...)
  • 绑定集合并使用将项目作为转换器参数的ValueConverter。再次使用 IndexOf(...)

此答案中给出了一个 valueconverter 获取项目的示例:https://stackoverflow.com/a/662232/11201993 这不需要您向视图模型添加字段。

大佬总结

以上是大佬教程为你收集整理的如何在 ViewModel 中获取 CollectionView 元素的索引?全部内容,希望文章能够帮你解决如何在 ViewModel 中获取 CollectionView 元素的索引?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。