如何设置selecteditem

时间:2010-12-11 20:23:22

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

我正在尝试设置listpicker控件的值/ selecteditem - 来自windows phone 7的silverlight工具包(当用户想要编辑xml中的条目时,它会从IO中提取数据并在文本中设置它盒/ listpickers)。

我目前正在尝试使用:

ListPickerSub.SelectedItem = sub;

(sub是一个字符串)

但它抛出了System.InvalidOperationException

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

3 个答案:

答案 0 :(得分:3)

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.ItemsSource = SubItems();


private IEnumerable<string> SubItems()
{
    yield return "monday";
    yield return "tuesday";
    yield return "wednesday";
    yield return "thursday";
    yield return "friday";
    yield return "saturday";
    yield return "sunday";
}

并将SelectedItem设置为:

ListPickerSub.SelectedItem = "sunday";

答案 1 :(得分:2)

如下所示:

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

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

答案 2 :(得分:0)

当然,您想要在基础数据源中设置数据,然后只刷新列表吗?