4

I have recently upgraded my OS to Windows 10 from Windows 8.1. I'm using VS 2013 With update 4. My app using the Treeview control from XAMLToolkit, and it works perfectly on Windows 8.1 environment. But under Windows 10, it gives me the following error. Please help.

This is the XAMLToolkit version I've used: nuget.org/packages/winrtxamltoolkit.windows

Exception message:

System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component. at Windows.UI.Xaml.Controls.ItemsControl.get_ItemTemplate() at WinRTXamlToolkit.Controls.HeaderedItemsControl.PrepareHeaderedItemsControlContainer(HeaderedItemsControl control, Object item, ItemsControl parentItemsControl, Style parentItemContainerStyle) at WinRTXamlToolkit.Controls.HeaderedItemsControl.PrepareHeaderedItemsControlContainerForItemOverride(DependencyObject element, O

Stacktrace:

at Windows.UI.Xaml.Controls.ItemsControl.get_ItemTemplate() at WinRTXamlToolkit.Controls.HeaderedItemsControl.PrepareHeaderedItemsControlContainer(HeaderedItemsControl control, Object item, ItemsControl parentItemsControl, Style parentItemContainerStyle) at WinRTXamlToolkit.Controls.HeaderedItemsControl.PrepareHeaderedItemsControlContainerForItemOverride(DependencyObject element, Object item, ItemsControl parent, Style parentItemContainerStyle) at WinRTXamlToolkit.Controls.TreeView.PrepareContainerForItemOverride(DependencyObject element, Object item) at Windows.UI.Xaml.FrameworkElement.MeasureOverride(Size availableSize)

Inner exception is null

4

2 回答 2

1

我遇到了同样的问题,我所做的只是删除了treeview控件中的itemtemplate并在页面资源中单独添加,我将itemtemplate引用到我的treeview控件。它解决了我的问题。

<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>
于 2015-11-03T07:04:04.740 回答
0

似乎您HierarchicalDataTemplate在 XAML 代码中为TreeView. 用相应的 C# 代码替换 XAML 会有所帮助。我们可以在事件的DataTemplateExtensions.Hierarchy代码隐藏中设置附加属性,如下所示:LoadedTreeView

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

在代码隐藏中:

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") }
                });
        }
于 2015-08-02T22:41:25.950 回答