1

对不起,我的英语不好。

我有以下 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 不同 ......但这也不起作用(也许它在很久以前就起作用了,但现在不起作用)。

你有什么想法可以帮助我吗?

谢谢你。

4

0 回答 0