2010-11-24 2 views
0

(공급자 단지 하나의 속성 (이름)를 포함하는 매우 간단한 클래스입니다설정 실버의 목록 상자에서 항목을 선택 - 윈도우 폰 7

ProviderList = new List<Provider>(); 
//Populate list 
Providers.ItemsSource = ProviderList; 

다음과 같이 나는 일반적인 목록에 바인딩 된 데이터 바인딩 된 목록 상자가 있습니다. 나는 문제없이 선택한 항목을 저장할 수 있지만, 나는 다음과 같이 그렇게하도록 노력하고 나중에 코드에서 선택한 항목을 설정 관리 할 수 ​​없습니다 :..

int x = Providers.Items.IndexOf((Provider)_Settings["provider"]); 

을 그러나 IndexOf() 항상 -1을 반환하는 경우 I runtes에서 Providers.Items [1]과 _Setting [ "provider"]를 검사하십시오. e 직접 창을 사용하여 둘 다 반환 함

{StoreRetrieveData.Provider} 
Name: "Greenflag" 

내가 뭔가 잘못하고있는 것입니까?

답변

1

두 값이 같은 두 개체를 비교할 가능성이 있습니까? 대신 다음 코드를 시도 할 수 있습니다 :

Provider provider = (Provider)_Settings["provider"]; 
items.OfType<Provider>().Where(p => p.Name.Equals(provider.Name)); 
+0

저는 LINQ 구문에 익숙하지 않아이 기능을 사용할 수 없습니다. 귀하의 코드를 "var test = Providers.Items.OfType () .Where (p => p.Name.Equals (provider.Name));"로 사용하고 있습니다. – Fishcake

+0

"System.collections ... .Current"- 'System.Collections.Generic.IEnumerable '에 'System'에 대한 정의가없고 'System'에 대한 정의가 없으면이 오류가 발생합니다. 'System.Collections.Generic.IEnumerable '형식의 첫 번째 인수를 찾을 수 있습니다 (사용 지시문이나 어셈블리 참조가 누락 되었습니까?) – Fishcake

+0

.Net 3.5 이상을 사용하는 경우 ' 코드 파일 맨 위에 System.Linq'을 사용합니다. LINQ를 사용하지 않으려면 대신 루프를 사용해야합니다. – decyclone

1

사용 :

ListBox.Items 
    .OfType<ColumnDescriptor>() 
    .FirstOrDefault(c => 
     String.Equals(
      c.Name, 
      ((Provider)_Settings["provider"]).Name, 
      StringComparison.Ordinal)); 
관련 문제