帮助将非常感激。
我在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)
注意:如果我减少了盒子集合的层次结构层数量,那么一切正常。
请帮助,我已经挣扎了好几天。我在论坛或博客中找不到任何东西。
谢谢