C# 如何设置selecteditem

C# 如何设置selecteditem,c#,silverlight,windows-phone-7,silverlight-toolkit,C#,Silverlight,Windows Phone 7,Silverlight Toolkit,我正在尝试从silverlight toolkit for windows phone 7中设置listpicker控件的值/selecteditem(当用户想要编辑xml中的条目时,它会从IO中提取数据并在文本框/listpicker中进行设置) 我目前正在尝试使用: ListPickerSub.SelectedItem = sub; (sub是一个字符串) 但它抛出了一个System.InvalidoOperationException Additional information: Se

我正在尝试从silverlight toolkit for windows phone 7中设置listpicker控件的值/selecteditem(当用户想要编辑xml中的条目时,它会从IO中提取数据并在文本框/listpicker中进行设置)

我目前正在尝试使用:

ListPickerSub.SelectedItem = sub;
(sub是一个字符串)

但它抛出了一个System.InvalidoOperationException

Additional information: SelectedItem must always be set to a valid value.

确实要在基础数据源中设置数据,然后刷新列表吗?

SelectedItem
需要一个ListPickerItem(列表中的项目之一)。您正在向它传递一个字符串,因此出现了错误

您可能会发现设置
SelectedIndex
更容易

在不知道列表中填充的内容的情况下,很难给出设置SelectedItem的相关示例

编辑:
下面是一个如何绑定到字符串的示例。如果没有实际绑定到itemsource的可行示例,这就是我所能做的最好的了。(仅仅给出对象的名称或部分代码是不够的。)

假设:

<Controls:ListPicker x:Name="ListPickerSub">
    <Controls:ListPicker.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" />
        </DataTemplate>
    </Controls:ListPicker.ItemTemplate>
    <Controls:ListPicker.FullModeItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" />
        </DataTemplate>
    </Controls:ListPicker.FullModeItemTemplate>
</Controls:ListPicker>

如下所示:

ListPickerSub.SelectedItem = ListPickerSub.Items.First(x => (x as ListPickerItem).Content.ToString() == sub);

您可能需要将内容强制转换为TextBlock,并相应地更改代码。上述方法适用于我的情况,即使用ListPickerItem动态填充ListPicker。

什么是
sub
?它实际上属于列表吗?它是存储中某个元素的值是的,假设我使用了xElement(“子元素”)。值来设置数据绑定。sub是与subElement中的值相同的值。我还尝试(只是为了测试)静态设置listpicker的内容:我像这样填充列表:
@Jamie但是你传递什么作为ItemSource?绑定子名称。我确实尝试过使用:objectindex=subtext.FindName(sub);然后将selecteditem设置为index,但index始终返回为null非常感谢,这很好。我唯一的问题是在我的设置中,我像这样设置listpicker:
monday
对于每个值,我使用了双向绑定来设置selecteditem:
selecteditem=“{binding Source={StaticResource AppSettings},Path=WeekBeginSetting,Mode=TwoWay}”
此绑定返回正确的值,因为我已使用它设置textblock的文本(仅用于测试)。但是当尝试设置selecteditem时,它会抛出一个
系统。ArgumentOutOfRangeException
@Jamie请将此新问题作为新问题提问。如果您可以发布一个完整的示例来演示此问题,这将帮助您获得更快、更相关的答案。另请参阅
ListPickerSub.SelectedItem = "sunday";
ListPickerSub.SelectedItem = ListPickerSub.Items.First(x => (x as ListPickerItem).Content.ToString() == sub);