2009-12-10 11 views
44

मेरे पास एक विधि है:सिस्टम को कैसे डालें। Windows.Controls.SelectedItemCollection?

private void DeletePuzzle(object param) 
{ 
} 

param एक System.Windows.Controls.SelectedItemCollection है, जो मुझे एक WPF ListView की SelectedItems प्रॉपर्टी से मिला है।

किसी भी तरह, मैं इसे किसी ऑब्जेक्ट से किसी भी चीज़ पर उपयोगी नहीं लग सकता। मैं अपने सुरक्षा स्तर की वजह से System.Windows.Controls.SelectedItemCollection नहीं बना सकता, और param IList, ICollection या IEnumerable पर नहीं डाला जाएगा।

मैं परम वस्तुओं के माध्यम से कैसे पुन: प्रयास कर सकता हूं?

+0

'param'' को 'IENumerable' पर डालने का प्रयास करते समय आपको क्या त्रुटि मिलती है? साथ ही, क्या आपने इसे 'आईनेमेरेबल ' पर कास्ट करने का प्रयास किया है? 'SelectedItemCollection 'को' ObservableCollection 'से प्राप्त होता है जिसका अर्थ है कि आपको इसे' आईनेमेरेबल ',' आईनेमेरेबल ',' आईसीओलेक्शन', 'आईसीओलेक्शन ', या 'IList',' IList 'पर कास्टिंग करने में कोई समस्या नहीं होनी चाहिए। –

उत्तर

79

ठीक है, इसे हल किया गया। मैं की तरह

IList<PuzzleViewModel> collection = (IList<PuzzleViewModel>)param; 

कौन मुझसे कहा कि यह SelectedItemCollection से IList में परिवर्तित नहीं कर सकता है ...

यह सच है कि आप क्या करने की जरूरत है यह कास्ट करने के लिए कोशिश कर रखा है।

System.Collections.IList items = (System.Collections.IList)param; 
var collection = items.Cast<PuzzleViewModel>(); 
+2

धन्यवाद, इससे मुझे बहुत मदद मिली –

+0

आप कुछ स्थितियों में भी, जो आपको चाहिए उसे सीधे रूपांतरित कर सकते हैं। यदि आप 'सूची' या 'ऐरे' चाहते हैं तो आप केवल 'var collection = items.Cast ()। ToArray() 'या' var collection = items.Cast ()। ToList() ' –

-1

चेक प्रकार: System.Collections.Generic.IList<(Of <(ListViewDataItem>)>)

+0

मुझे लगता है कि यह एक वेब फॉर्म चीज है, डब्ल्यूपीएफ नहीं। – itowlson

+0

यह कानूनी सी # कोड भी नहीं है, यह जवाब कभी भी दिमाग में कोई उपयोगी अंतर्दृष्टि प्रदान नहीं करता है। –

1
परावर्तक से

: -

[Category("Appearance"), Bindable(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
public IList SelectedItems 
{ 
    get 
    { 
     return base.SelectedItemsImpl; 
    } 
} 

ListView के चयनित आइटम एक IList है, आईडी बुला विधि देखना पसंद है।

+1

कॉलिंग विधि रिलेकॉमैंड (जोश स्मिथ संस्करण) से थी। SelectedItemCollection ठीक से हो रहा था, लेकिन किसी को इसे आईएलिस्ट पर नहीं, बल्कि उसे डालने के लिए एक आईएलआईस्ट पर डालना है। –

संबंधित मुद्दे