我有viewport3D,我想将xaml文件中定义的多个3d对象添加到此Viewport3D,但默认情况下,.xaml文件中的3d对象已经与viewport3D一起提供,我无法将其添加到我的Viewport3D 如何在Viewport3D中使用.xaml文件中的3D对象?
我尝试使用XamlReader读取xaml,将其转换为viewport3D,然后将vieport3D子元素添加到我的视口中, 但我得到错误“指定的Visual已经是另一个Visual的子项或CompositionTarget的根。”
答案 0 :(得分:1)
尝试以下代码。我还没有真正使用过WPF中的3D,但我猜它的行为与常见的WPF面板相同:
Viewport3D vp = XamlReader.Load(fileName) as Viewport3D;
//Move the child visuals to a temporary collection.
List<Visual3D> items = new List<Visual3D>();
foreach (Visual3D visual in vp.Children)
{
items.Add(visual);
}
//"Detach" the visuals from the original parent.
vp.Children.Clear();
//Now, put it in the destination viewport.
foreach (var item in items)
{
myViewport.Children.Add(item);
}