2016-12-04 41 views
0

我在UWP平臺上使用HelixToolkit。最近我試圖改變它的一些功能,所以我寫了一個新的視口,模仿HelixToolkit中的一個。我遇到的這個問題在HelixToolkit中沒有發生。如何投影ItemsPanelRoot到SwapChainPanel

要在視口中創建SwapChainPanel(從ItemsControl類派生的類),HelixToolkit直接將ItemsPanelRoot轉換爲SwapChainPanel。

this.d3dTarget = new SwapChainTarget((SwapChainPanel)this.ItemsPanelRoot, this); 

然而,當我的代碼來這條線,運行時會彈出一個例外:

System.InvalidCastException:無法投 類型的對象Windows.UI.Xaml.Controls.StackPanel '鍵入 'Windows.UI.Xaml.Controls.SwapChainPanel'。

暫停鑄造前吧,我看 enter image description here 爲什麼顯示的StackPanel?

如果我在HelixToolkit之前暫停,它會顯示一堆內部異常。

這兩個差異之間可能是什麼原因?是否有一種替代方法來創建交換鏈以包裝方式包含其他物品?

回答

2

您引用的行不會創建SwapChainPanel,它只是檢索放入ItemsPanelTemplate中的SwapChainPanel

這是發生在這裏:https://github.com/helix-toolkit/helix-toolkit/blob/d386c9e1313ae1bbb1c179a17007e9b59ae221a6/Source/HelixToolkit.UWP/Themes/Generic.xaml

<Style TargetType="controls:Viewport3DX"> 
    <Setter Property="ItemsPanel"> 
     <Setter.Value> 
      <ItemsPanelTemplate> 
       <SwapChainPanel/> 
      </ItemsPanelTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

如果你想重現相同的行爲,請確保您的ItemsPanelItemsPanelTemplate相應設置。

+0

我看到,確實有一個我忽略的Xaml文件,我馬上試一試。 –

+0

它的工作原理非常感謝。 –