代码之家  ›  专栏  ›  技术社区  ›  Seva Alekseyev

将数据透视项派生类添加到数据透视时引发异常

  •  0
  • Seva Alekseyev  · 技术社区  · 6 年前

    UWP,C。我有一个 Pivot 控制。我想加一个 PivotItem -项集合的派生对象。它抛出了一个 COMException :

    未检测到已安装的组件。

    无法将targetType为“windows.ui.xaml.controls.pivotitem”的样式应用于类型为“windows.ui.xaml.controls.contentcontrol”的对象。

    如果重要的话,hresult是0x800f1000。

    复制一个干净的例子。这工作:

    MyPivot.Items.Insert(1, new PivotItem() { Header = "Boo" });
    

    这种例外:

    MyPivot.Items.Insert(1, new BooItem() { Header = "Boo" });
    

    在哪里? BooItem 定义为

    public class BooItem : PivotItem
    {
        public BooItem(){}
    }
    

    如果通过xaml指定,则 枢轴 -派生类在 枢轴 . 我在应用程序中的其他项目都是这样的。

    整个代码库是一个来自WindowsPhoneSilverlight的端口(目标是WP8.0),它在那里工作。现在,uwp不完全一样,但是,你会预料到…

    编辑:可以将项目添加为不可见。标题仍将出现,但内容将不可见。试图使其可见会导致相同的异常。

    有一条有趣的线 枢轴 文档:

    添加到数据透视中的任何非显式数据透视项都隐式包装在数据透视项中。

    执行派生的对象 枢轴 伯爵?


    edit2:在一个空白项目上复制。主页面xaml如下:

    <Page
        x:Class="UWTest.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:UWTest"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Pivot x:Name="ThePivot">
            <PivotItem Header="Foo">
                <StackPanel>
                    <Button Content="Go" Click="OnGo"/>
                </StackPanel>
            </PivotItem>
    
        </Pivot>
    </Page>
    

    后面的代码是:

    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    namespace UWTest
    {
        public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.InitializeComponent();
            }
    
            private void OnGo(object sender, RoutedEventArgs e)
            {
                ThePivot.Items.Insert(1, new BooItem() { Header = "Boo" });
            }
        }
        public class BooItem : PivotItem
        {
            public BooItem() { }
        }
    }
    

    Visual Studio 2015更新3,目标版本14393,最低版本相同。

    编辑:在另一台机器上复制。Visual Studio 2015,全新的非个性化Windows C项目。Windows 10 Pro,v 1803(内部版本17134.648)。

    0 回复  |  直到 6 年前