如何使用 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: “多选列表框”主题不能帮助我解决我的问题,因为默认情况下它没有在ListViews中实现,在我的问题中我解释说它是一个自制的ListView以及如何将“SelectedItemsList”添加到默认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);
- 1 回答
- 0 关注
- 71 浏览
添加回答
举报
0/150
提交
取消