2010-11-24 100 views
0

我有一个绑定到一个通用的列表中的数据绑定列表框,如下所示(供应商是一个非常简单的类,只包括一个单一的属性(名称)设置所选项目的列表框在Silverlight - Windows Phone 7的

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

。我可以保存所选择的项目没有问题,但我不能设法以后设置从代码中所选择的项目,我想这样做如下:。

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

但是IndexOf()总是返回-1如果我在runtim中检查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 2010-11-24 10:14:36

1

用途:

ListBox.Items 
    .OfType<ColumnDescriptor>() 
    .FirstOrDefault(c => 
     String.Equals(
      c.Name, 
      ((Provider)_Settings["provider"]).Name, 
      StringComparison.Ordinal)); 
相关问题