我正在使用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元素。您必须绑定(bind)它们或使用模板。
遇到这个确切的问题后,我在这里找到了解释:http://silverlight.codeplex.com/workitem/9412

我设法使我的解决方案能够执行以下操作:

<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
  }
}

关于xaml - Windows Phone工具包ListPicker引发未处理的异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17065970/

10-13 02:23