我正在开发 Windows Phone 8 应用程序。我的应用程序使用 Tookit 中的 ListPicker。我的相关代码如下所示:
<toolkit:ListPicker x:Name="myListPicker" Margin="12,-6,12,-2" Loaded="myListPicker_Loaded">
<toolkit:ListPicker.Items>
<!-- Items are defined here -->
</toolkit:ListPicker.Items>
</toolkit:ListPicker>
private void myListPicker_Loaded(object sender, RoutedEventArgs e)
{
if ((myListPicker != null) && (viewModel != null))
{
}
}
每当项目总数超过某个阈值时,我的应用程序就会抛出 System.ArgumentException。我知道这一点,因为我有以下代码:
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
MessageBox.Show(e.ExceptionObject.Message + "\n\nException\n" + e.ExceptionObject.GetType().FullName + "\n" + e.ExceptionObject.StackTrace);
if (Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
Debugger.Break();
}
}
该消息显示“值未落在预期范围内。”。据我所知,当 ListPicker 需要进入全屏模式时会发生这种情况。我不明白为什么会发生这种情况。
有人有任何见解吗?
看起来,在全屏模式下,您无法将 ListPicker 的项目设置为 xaml 页面中的特定 UI 元素。您必须绑定它们或使用模板。
遇到这个确切的问题后,我在这里找到了解释:http://silverlight.codeplex.com/workitem/9412 http://silverlight.codeplex.com/workitem/9412
ListPickerItems 是 UIElements,ListPicker 在其呈现器中呈现它们。当项目数不超过 5 时,将在当前页面上打开展开模式,您可以看到演示器中的所有项目。当存在 6 个或更多项目时,打开列表选择器会进入完整模式,从而打开一个新页面。这个新页面有一个列表框,它将其 items 属性设置为列表选择器的项目。这就是它破裂的地方。通过将列表框的项目设置为列表选择器的项目(在本例中为列表选择器项目的列表),列表框会将这些 UIElement 放入其视图中。现在,单个列表框项包含在可视化树上的两个位置中。
由于此问题,ListPicker 仅支持数据绑定和模板化。不要将 ListPicker 的项目设置为特定的 UIElements.
我设法让我的解决方案正常工作,执行如下操作:
<toolkit:ListPicker x:Name="myListPicker" Margin="12,-6,12,-2" Loaded="myListPicker_Loaded">
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Tag="{Binding ID}"/>
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>
<toolkit:ListPicker.FullModeItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Tag="{Binding ID}"/>
</DataTemplate>
</toolkit:ListPicker.FullModeItemTemplate>
</toolkit:ListPicker>
private void myListPicker_Loaded(object sender, RoutedEventArgs e)
{
if ((myListPicker != null) && (viewModel != null))
{
myListPicker.ItemsSource = _Data; //_data is an array of objects with 2 properties named ID & Name
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)