Silverlight:ListBox和嵌套集合的异常

时间:2014-05-09 09:35:36

标签: silverlight

帮助将非常感激。

我在MainPage.xaml中定义了一个列表框,它绑定到嵌套对象(框)的集合。

<ListBox x:Name="MyListBox"
                 ItemTemplate="{StaticResource NestedDataTemplate}"/>

方框:

public class Box
{
  public string BoxName { get; set; }
  public ObservableCollection<Box> Boxes { get; set; }
}

我用每个盒子填充每个盒子的每个子集合,最多15次,这样层次结构最多包含15个级别。

箱 -框 - 框 ---盒

...... 15次

在MainPage.xaml.cs的已加载事件的处理程序中,集合的填充方式如下:

 ObservableCollection<Box> boxCollection = new ObservableCollection<Box>();

 Box lastBox = new Box();
 lastBox.BoxName = "Box Nr. 1";
 lastBox.Boxes = new ObservableCollection<Box>();

for (int i = 1; i < 15; i++)
{
 Box newBox = new Box();
 newBox.BoxName = "Box Nr. " + (i + 1);
 newBox.Boxes = new ObservableCollection<Box>();
 newBox.Boxes.Add(lastBox);
 lastBox = newBox;
}

boxCollection.Add(lastBox);
MyListBox.ItemsSource = boxCollection;

列表框项目模板是App.xaml资源部分中定义的分层数据模板。

    sdk:HierarchicalDataTemplate x:Key="NestedDataTemplate">
      <Grid>
        <Grid.RowDefinitions>
          <RowDefinition Height="Auto"/>
          <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

      <Border Grid.RowSpan="2" Background="LightGray" Opacity="0.5"/>
      <TextBlock Text="{Binding BoxName}"/>
      <ListBox Grid.Row="1" ItemsSource="{Binding Boxes}" ItemTemplate="{StaticResource NestedDataTemplate}"/>
     </Grid>
   </sdk:HierarchicalDataTemplate>

当我运行应用程序时,它会崩溃并抛出以下异常,可以在App.xaml.cs中的Application_UnhandledException处理程序中进行调查。

例外:

Error HRESULT E_FAIL has been returned from a call to a COM component.


   at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
   at MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)

注意:如果我减少了盒子集合的层次结构层数量,那么一切正常。

请帮助,我已经挣扎了好几天。我在论坛或博客中找不到任何东西。

谢谢

0 个答案:

没有答案