我有一个数据绑定Listbox绑定到通用列表,如下所示(Provider是一个非常简单的类,只包含一个属性(Name)。
ProviderList = new List<Provider>();
//Populate list
Providers.ItemsSource = ProviderList;
我可以毫无问题地保存所选项目,但我无法设法从代码中设置所选项目。我试着这样做:
int x = Providers.Items.IndexOf((Provider)_Settings["provider"]);
但是IndexOf()
始终返回-1。如果我在运行时使用立即窗口检查Providers.Items [1]和_Setting [“provider”]它们都返回
{StoreRetrieveData.Provider}
Name: "Greenflag"
我做错了什么(显然我是)?
答案 0 :(得分:1)
您是否有可能比较具有相同值的两个不同对象?您可以尝试使用以下代码:
Provider provider = (Provider)_Settings["provider"];
items.OfType<Provider>().Where(p => p.Name.Equals(provider.Name));
答案 1 :(得分:1)
使用:
ListBox.Items
.OfType<ColumnDescriptor>()
.FirstOrDefault(c =>
String.Equals(
c.Name,
((Provider)_Settings["provider"]).Name,
StringComparison.Ordinal));
答案 2 :(得分:1)
您可能必须重载Equals和Provider类的==运算符才能使其正常工作。否则,如果对象是不同的实例,则您的比较将失败。见http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx