我正在尝试设置列表选择器控件的值/selecteditem-来自windows phone 7的silverlight工具包(当用户想要编辑xml中的条目时,它从IO中提取数据并将其设置在文本框/列表选择器中)。
我目前正在尝试使用:
ListPickerSub.SelectedItem = sub;(sub是一个字符串)
但是它抛出了一个System.InvalidOperationException
Additional information: SelectedItem must always be set to a valid value.发布于 2010-12-13 03:49:09
SelectedItem需要一个ListPickerItem (它是列表中的一项)。您向它传递了一个字符串-因此出现了错误。
您可能会发现设置SelectedIndex更容易。
在不知道用什么填充列表的情况下,很难给出设置SelectedItem的相关示例。
编辑:
下面是一个如何绑定到字符串的示例。如果没有一个你实际绑定到项目源的可行示例,这是我所能做的最好的事情。(仅仅给出对象的名称或部分代码是不够的。)
假设:
<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";发布于 2011-11-28 21:42:34
类似于以下内容:
ListPickerSub.SelectedItem = ListPickerSub.Items.First(x => (x as ListPickerItem).Content.ToString() == sub);您可能需要将内容转换为TextBlock,并相应地更改代码。上面的方法适用于我使用ListPickerItem动态填充ListPicker的情况。
发布于 2010-12-13 01:02:20
您肯定想在底层数据源中设置数据,然后刷新列表?
https://stackoverflow.com/questions/4418754
复制相似问题