如何将 ItemsPanelRoot 转换为 SwapChainPanel
How to cast ItemsPanelRoot to SwapChainPanel
我在 UWP 平台上使用 HelixToolkit。最近我试图改变它的一些功能,所以我写了一个新的视口,模仿 HelixToolkit 中的一个。这是我遇到的一个问题,但在 HelixToolkit 中没有发生。
要在视口中创建一个 SwapChainPanel(从 ItemsControl class 派生的 class),HelixToolkit 直接将 ItemsPanelRoot 转换为 SwapChainPanel。
this.d3dTarget = new SwapChainTarget((SwapChainPanel)this.ItemsPanelRoot, this);
但是,当我的代码走到这一行时,运行时弹出异常:
System.InvalidCastException: Unable to cast object of type
'Windows.UI.Xaml.Controls.StackPanel' to type
'Windows.UI.Xaml.Controls.SwapChainPanel'.
在选角之前暂停一下,我明白了
为什么显示 StackPanel?
如果我在 HelixToolkit 之前暂停,它会显示一堆内部异常。
造成这两种差异的原因可能是什么?是否有替代方法以包含其他项目的包装方式创建交换链?
您引用的行不会创建 SwapChainPanel
,它只是检索 ItemsPanelTemplate
中的 SwapChainPanel
。
<Style TargetType="controls:Viewport3DX">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<SwapChainPanel/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
如果您想重现相同的行为,请确保 ItemsPanel
的 ItemsPanelTemplate
已相应设置。
我在 UWP 平台上使用 HelixToolkit。最近我试图改变它的一些功能,所以我写了一个新的视口,模仿 HelixToolkit 中的一个。这是我遇到的一个问题,但在 HelixToolkit 中没有发生。
要在视口中创建一个 SwapChainPanel(从 ItemsControl class 派生的 class),HelixToolkit 直接将 ItemsPanelRoot 转换为 SwapChainPanel。
this.d3dTarget = new SwapChainTarget((SwapChainPanel)this.ItemsPanelRoot, this);
但是,当我的代码走到这一行时,运行时弹出异常:
System.InvalidCastException: Unable to cast object of type 'Windows.UI.Xaml.Controls.StackPanel' to type 'Windows.UI.Xaml.Controls.SwapChainPanel'.
在选角之前暂停一下,我明白了
如果我在 HelixToolkit 之前暂停,它会显示一堆内部异常。
造成这两种差异的原因可能是什么?是否有替代方法以包含其他项目的包装方式创建交换链?
您引用的行不会创建 SwapChainPanel
,它只是检索 ItemsPanelTemplate
中的 SwapChainPanel
。
<Style TargetType="controls:Viewport3DX">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<SwapChainPanel/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
如果您想重现相同的行为,请确保 ItemsPanel
的 ItemsPanelTemplate
已相应设置。