对不起,我的英语不好。
我有以下 XAML:
<Window x:Class="Project.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:HelixToolkit="clr-namespace:HelixToolkit.Wpf;assembly=HelixToolkit.Wpf"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ResizeMode="CanResizeWithGrip" WindowStartupLocation="CenterScreen" MinWidth="1024" MinHeight="768" Loaded="Window_Loaded">
<Grid>
<Button Click="Button_Click"/>
<HelixToolkit:HelixViewport3D x:Name="viewport">
<HelixToolkit:HelixViewport3D.Camera>
<OrthographicCamera Position="1, 1, 1" LookDirection="-1, -1, -1" UpDirection="1, 0, 0" />
</HelixToolkit:HelixViewport3D.Camera>
<HelixToolkit:DefaultLights/>
<ModelVisual3D x:Name="elem0"/>
<ModelVisual3D x:Name="elem1"/>
<ModelVisual3D x:Name="elem2"/>
</HelixToolkit:HelixViewport3D>
</Grid>
</Window>
以及以下 Button_Click :
private void Button_Click()
{
elem0.Children.Add(visual...);
..
elem1.Children.Add(visual...);
..
elem2.Children.Add(visual...);
..
viewport.ZoomExtents();
}
除了 Button_Click() 中的 viewport.ZoomExtents() 之外,一切(绘制过程)都可以正常工作。缩放范围根本没有完成。
如果在 HelixViewport3D 的子项更新后的某个时间调用 ZoomExtents 方法,则该方法有效。例如,如果我创建第二个按钮,我只调用 viewport.ZoomExtents() 并单击此按钮,则缩放范围完成。我已经订阅了 Viewport 的所有(有用的)事件并在那里调用 viewport.ZoomExtents()。我认为当孩子们“改变”时会触发一个事件......但没有任何效果......
我尝试了在这里找到的另一个解决方案:Helix 3D Toolkit - ZoomExtents 方法调用的工作方式与通过手势激活 ZoomExtents 不同 ......但这也不起作用(也许它在很久以前就起作用了,但现在不起作用)。
你有什么想法可以帮助我吗?
谢谢你。