2009-12-10 2 views
44

System.Windows.Controls.SelectedItemCollection을 캐스팅하는 방법?

나는 메서드가 있습니다 :

private void DeletePuzzle(object param) 
{ 
} 

param은 WPF ListViewSelectedItems 속성에서 가져온 System.Windows.Controls.SelectedItemCollection입니다.

어쨌든, 나는 객체에서 유용하게 사용할 수 없다. 보호 수준 때문에 System.Windows.Controls.SelectedItemCollection을 만들 수 없으며 param은 IList, ICollection 또는 IEnumerable으로 캐스팅되지 않습니다.

param의 항목을 반복하는 방법은 무엇입니까?

+0

'param '을'IEnumerable'으로 변환하려고 할 때 어떤 오류가 발생합니까? 또한 'IEnumerable '에 캐스팅을 시도 했습니까? 'SelectedItemCollection'은'ObservableCollection '에서 상속됩니다. 즉,'IEnumerable','IEnumerable ','ICollection','ICollection '또는'IList','IList '에 캐스팅하는 데 아무런 문제가 없어야합니다. –

답변

79

오른쪽으로 정렬했습니다. 나는이 당신이해야 할 일을 사실상는 IList의에 SelectedItemCollection에서 변환 할 수 없습니다 나에게 말했다

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

...

처럼 캐스팅 오려고했습니다.

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

고맙습니다. 내게 많은 도움이되었습니다. –

+0

특정 상황에서 직접 필요한 것으로 변환 할 수도 있습니다. 'List' 또는'Array'를 원한다면'var collection = items.Cast () .ToArray()'또는'var collection = items.Cast (). ToList() ' –

-1

확인 유형 : 반사체에서 System.Collections.Generic.IList<(Of <(ListViewDataItem>)>)

+0

WPF가 아니라 Web Forms라고 생각합니다. – itowlson

+0

그것은 합법적이지 않습니다. C# 코드는 전혀 도움이되지 않습니다. –

1

: -의 ListView의

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

선택한 항목은 IList의이며, id는 호출하는 방법을보고 싶다.

+1

호출 방법은 RelayCommand (Josh Smiths 버전)에서 수행되었습니다. SelectedItemCollection은 정상적으로 처리되었지만 IList가 아닌 IList로 캐스팅해야합니다 (). –

관련 문제