在Silverlight中设置列表框上的选定项目 - Windows Phone 7

时间:2010-11-24 09:19:50

标签: c# silverlight-4.0 windows-phone-7

我有一个数据绑定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"

我做错了什么(显然我是)?

3 个答案:

答案 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