Windows phone 8 &引用;SelectedIndex必须始终设置为有效值";wp8中的listpicker问题
我在这个网站上尝试了这里给出的所有解决方案,但在我的案例中都失败了。 甚至没有解决我的问题。请提出任何其他解决方案或向我解释为什么它不起作用 我有一个产品列表选择器,它被绑定在代码后面,比如Windows phone 8 &引用;SelectedIndex必须始终设置为有效值";wp8中的listpicker问题,windows-phone-8,Windows Phone 8,我在这个网站上尝试了这里给出的所有解决方案,但在我的案例中都失败了。 甚至没有解决我的问题。请提出任何其他解决方案或向我解释为什么它不起作用 我有一个产品列表选择器,它被绑定在代码后面,比如 listpickerProducts.ItemSourde= 下面的代码是用OnNavigateTo方法编写的,用于更改此listpicker的selectedIndex,但它会引发异常,因为它总是将selectedIndex设置为-1 listpickerProducts.ItemSourde = &
listpickerProducts.ItemSourde=
下面的代码是用OnNavigateTo方法编写的,用于更改此listpicker的selectedIndex,但它会引发异常,因为它总是将selectedIndex设置为-1
listpickerProducts.ItemSourde = <myProductList>
listpickerProducts.SelectionChanged += listpickerProducts_SelectionChanged;
listpickerProducts.SelectedIndex = 1; //Here it throws exception : SelectedIndex must always be set to a valid value`
任何帮助都将不胜感激。我认为异常消息本身非常有用。导航到页面时,您正在设置所选索引。此时,
ListPicker
甚至可能无法加载。即使它已加载,也尚未完成绑定。因此,它没有任何项,索引1无效。您可以在这里尝试几种方法
listpickerProducts.Loaded
事件中设置索引。如果这行得通,你就可以走了列表选择器
中确实填充了项目。可能存在一些绑定错误,ListPicker
可能有零项,使得索引1无效private void listpickerProducts_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (listpickerProducts.SelectedIndex > -1)
{
int index = listpickerProducts.SelectedIndex;
if (index >= 0)
{
lblUnit.Text = (listpickerProducts.SelectedItem as Products).Unit.ToString();
lblRateValue.Text = (listpickerProducts.SelectedItem as Products).Rate.ToString();
}
}
}
另一件事是,ListPicker似乎需要在产品对象中实现Equals,或者在项目源中使用什么类。
为我解决了这个问题。在this.Loaded事件中设置所选索引,而不是OnNavigatedTo。我猜您正在尝试在构建UI之前设置UI事件谢谢。我也尝试过。但是没有任何区别(如果您正在绑定,我建议您也绑定所选索引。@PeterRitchie我不明白。我的意思是,如何绑定所选索引??在xaml代码中??您能否显示
listpickerProducts\u SelectionChanged
?在黑暗中拍摄,但我怀疑您将SelectedItem=null
(或selectedIndex=-1
)此事件结束时。在下一行中,设置SelectedIndex
,将触发所述事件,并将null
放入ListPicker。项
作为ListPicker的异常原因(如错误所述)必须有一个有效的索引>=0;感谢您的回答。按照第二种方法,我的listpicker填充得很好,正如我所需要的..但我真正想要的是..每当我回到这个页面..那时..我带着一个索引值..我想在这里设置为listpickerProducts的selectedIndex。正如我所指定的,每次都取-1当加载页面时。因此,当我有一个新的索引值要设置时,它不允许我更改。我的问题不在selectionChanged事件中。它工作正常。但是,我想要的是,每当我来到这个页面时,它应该允许我设置一个从其他地方获取的索引值。我希望我的listpicker用t选择他是我想要的。
private void listpickerProducts_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int index = listpickerProducts.SelectedIndex;
// MessageBox.Show(index.ToString());
if (index >= 0)
{
lblUnit.Text = (listpickerProducts.SelectedItem as Products).Unit.ToString();
lblRateValue.Text = (listpickerProducts.SelectedItem as Products).Rate.ToString();
}
}
private void listpickerProducts_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (listpickerProducts.SelectedIndex > -1)
{
int index = listpickerProducts.SelectedIndex;
if (index >= 0)
{
lblUnit.Text = (listpickerProducts.SelectedItem as Products).Unit.ToString();
lblRateValue.Text = (listpickerProducts.SelectedItem as Products).Rate.ToString();
}
}
}