为了账号安全,请及时绑定邮箱和手机立即绑定

ListView 在 MVVM 中以编程方式选择多个项目

ListView 在 MVVM 中以编程方式选择多个项目

C#
慕工程0101907 2023-08-20 09:46:53
如何使用 MVVM 模式从代码中选择几行到 ListView 中?我使用的ListView是由一个已经不在的队友制作的public static readonly DependencyProperty SelectedItemsListProperty = DependencyProperty.Register("SelectedItemsList" , typeof(IList) , typeof(SrListView) , new PropertyMetadata(null));(...)public IList SelectedItemsList        {            get            {                return ( IList )GetValue(SelectedItemsListProperty);            }            set            {                SetValue(SelectedItemsListProperty , value);            }        }(...)private void SrListView_SelectionChanged(object sender , SelectionChangedEventArgs e)        {            SelectedItemsList = SelectedItems;        }我这样使用这个列表视图:<CustomListView SelectionMode="Extended"                ItemsSource="{Binding ocPackages}"                SelectedItem="{Binding objSelectedPackage}"                SelectedItemsList="{Binding ilSelectedPackages, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></CustomListView>        private IList _ilSelectedPackages; // = new ArrayList()        public IList ilSelectedPackages        {            get            {                return _ilSelectedPackages;            }            set            {                _ilSelectedPackages = value;                OnPropertyChanged(nameof(ilSelectedPackages));            }        }ilSelectedPackages.Clear();ilSelectedPackages.Add(objDTO_PackageToSelect);我尝试清除然后填充 ilSelectedPackages 但这对 ListView 的选择没有影响:(编辑1: &ldquo;多选列表框&rdquo;主题不能帮助我解决我的问题,因为默认情况下它没有在ListViews中实现,在我的问题中我解释说它是一个自制的ListView以及如何将&ldquo;SelectedItemsList&rdquo;添加到默认ListView 。
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

问题并不在于我最初想到的自制组件(我没有在正确的区域中搜索),而只是在我选择对象时:


ilSelectedPackages.Add(objDTO_PackageToSelect);

objDTO_PackageToSelect 是对象的副本,因此不是来自填充 ListView 的 ObservableCollection 的 ocPackages。


结论:我们必须选择 Binded observable 集合的确切对象。


DTO_Package objPackInOC = ocPackages.Where(Pack => Pack.sGuid == objDTO_PackageToSelect.sGuid).FirstOrDefault();


if(objPackInOC != null)

     ilSelectedPackages.Add(objPackInOC);


查看完整回答
反对 回复 2023-08-20
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信