亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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條經驗 獲得超7個贊

問題并不在于我最初想到的自制組件(我沒有在正確的區域中搜索),而只是在我選擇對象時:


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 關注
  • 122 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號