UWP,C#。我有一个Pivot
控件。我试图将PivotItem
派生的对象添加到Items集合中。它抛出一个COMException
:
未检测到已安装的组件。
不能将目标类型为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指定,则PivotItem
派生的类将在Pivot
中工作。我在应用中的其他物品都是这样。
整个代码库是Windows Phone Silverlight(针对WP8.0)的一个端口,它在那里工作。现在,UWP并不完全相同,但是您仍然希望...
编辑:您可以将项目添加为不可见。标头仍然会出现,但是内容将是不可见的。试图使其可见会导致相同的异常。
Pivot
文档中有一行有趣的内容:
您添加到数据透视表中的任何未明确定义为PivotItem的项目都隐式包装在数据透视表中。
派生出PivotItem
的对象算在内吗?
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,全新的Unversal Windows C#项目。 Windows 10 Pro,v 1803(内部版本17134.648)。