windows-runtime windows-store-apps winrt-xaml windows-10 winrt-xaml-toolkit

windows runtime - WinRTXAMLToolkit Treeview Crash en la ventana 10



windows-runtime windows-store-apps (2)

Recientemente, actualicé mi sistema operativo a Windows 10 desde Windows 8.1. Estoy usando VS 2013 con la actualización 4. Mi aplicación utiliza el control treeview de XAMLToolkit y funciona perfectamente en el entorno Win 8.1. Pero en Windows 10 me da el siguiente error. Por favor ayuda.

Esta es la versión de XAMLToolkit que he usado: nuget.org/packages/winrtxamltoolkit.windows

Mensaje de excepción:

System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL ha sido devuelto desde una llamada a un componente COM. en Windows.UI.Xaml.Controls.ItemsControl.get_ItemTemplate () en WinRTXamlToolkit.Controls.HeaderedItemsControl.PrepareHeaderedItemsControlContainer (control HeaderedItemsControl, elemento de objeto, ItemsControl parentItemsControl, Estilo parentItemContainerStyle) en WinRTXamlToolkit.Controls.HeaderedItemsControl.PrepareHeaderedItemsControlContainerForItemOverride (elemento de DependencyObject, O

Stacktrace:

en Windows.UI.Xaml.Controls.ItemsControl.get_ItemTemplate () en WinRTXamlToolkit.Controls.HeaderedItemsControl.PrepareHeaderedItemsControlContainer (control HeaderedItemsControl, elemento de objeto, ItemsControl parentItemsControl, Estilo parentItemContainerStyle) en WinRTXamlToolkit.Controls.HeaderedItemsControl.PrepareHeaderedItemsControlContainerForItemOverride (elemento de DependencyObject, elemento de objeto, ItemsControl parent, Style parentItemContainerStyle) en WinRTXamlToolkit.Controls.TreeView.PrepareContainerForItemOverride (Elemento DependencyObject, Elemento de objeto) en Windows.UI.Xaml.FrameworkElement.MeasureOverride (Size availableSize)

La excepción interna es nula


Parece que estás usando una HierarchicalDataTemplate en tu código XAML para TreeView . Reemplazar el XAML con el código C # correspondiente lo ayudará. Podemos establecer la propiedad adjunta DataTemplateExtensions.Hierarchy en código subyacente en el evento Loaded para TreeView , así:

<controls:TreeView x:Name="treeView" Loaded="treeView_Loaded" ...

Y en código subyacente:

private void treeView_Loaded(object sender, RoutedEventArgs e) { //don''t know why, but in Windows 10 if this code is as XAML, the app falls with a ComExcpetion //so the corresponding XAML should be commented out like this: //... //<controls:TreeView.ItemTemplate> // <DataTemplate> // <!-- <data:DataTemplateExtensions.Hierarchy> // <data:HierarchicalDataTemplate ItemsSource="{Binding Folders}" /> // </data:DataTemplateExtensions.Hierarchy> --> // <Grid> //... WinRTXamlToolkit.Controls.Data.DataTemplateExtensions.SetHierarchy(treeView.ItemTemplate, new WinRTXamlToolkit.Controls.Data.HierarchicalDataTemplate { ItemsSource = new Windows.UI.Xaml.Data.Binding { Path = new PropertyPath("Folders") } }); }


Me encontré con el mismo problema, lo que hice fue eliminar la plantilla de elementos dentro del control de vista de árbol y agregarla por separado en el recurso de la página y referí la plantilla de elementos al control treeview. resolvió mi problema

<Page.Resources> <DataTemplate x:Name="TreeViewItemTemplate"> <Grid> <TextBlock Text="{Binding Name}" /> </Grid> <XCDATA:DataTemplateExtensions.Hierarchy> <XCDATA:HierarchicalDataTemplate ItemsSource="{Binding Items}" /> </XCDATA:DataTemplateExtensions.Hierarchy> </DataTemplate> </Page.Resources> <XC:TreeView ItemTemplate="{StaticResource TreeViewItemTemplate}" ItemsSource="{Binding ObjShopItems}"> </XC:TreeView>