Нажмите на 3D-модель набора инструментов Helix, и переключение вкладок программно не работает. - PullRequest
0 голосов
/ 08 июля 2019

Вкладки переключаются после нажатия на временную кнопку, но эта же функция не работает после нажатия на 3D-модель.

У меня есть 2 3d модели в 2 вкладках и куча точек для этих моделей, у меня все это сделано, кроме переключения между вкладками. Я думал, что что-то путаю со слишком большим количеством операций, но я вырезал все, что было ненужным, и оставил только TabController с 2 вкладками и одной 3D-моделью на каждой вкладке. Чтобы упростить переключение вкладок, я назначил действие MouseDown на ViewPort3D и заполнил его работающим в другом месте кодом.

XAML код:

<Grid Grid.Column="0">
                <TabControl x:Name="Tabs3DControll" SelectedIndex="{Binding SelectedTabIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                    <TabItem x:Name="TopTab" Header="Top">
                        <t:HelixViewport3D x:Name="Viewport3DTOP" CameraRotationMode="Turntable" ShowCameraTarget="True" IsHeadLightEnabled="True" MouseDown="Viewport3D_MouseDown" ShowCoordinateSystem="True">
                            <t:FileModelVisual3D x:Name="FileModel3DTOP" MouseMove="ModelOnMouseMove">
                            </t:FileModelVisual3D>
                        </t:HelixViewport3D>
                    </TabItem>
                    <TabItem x:Name="BottomTab" Header="Bottom" >
                        <t:HelixViewport3D x:Name="Viewport3DBOTTOM" CameraRotationMode="Turntable" ShowCameraTarget="True" IsHeadLightEnabled="True" MouseDown="Viewport3D_MouseDown" ShowCoordinateSystem="True">
                            <t:FileModelVisual3D x:Name="FileModel3DBOTTOM" MouseMove="ModelOnMouseMove">
                            </t:FileModelVisual3D>
                        </t:HelixViewport3D>
                    </TabItem>                    
                </TabControl>
            </Grid>

Код для переключения вкладок:

private void Viewport3D_MouseDown(object sender, MouseButtonEventArgs e)
        {
            int newIndex = Tabs3DControll.SelectedIndex + 1;
            if (newIndex >= Tabs3DControll.Items.Count)
                newIndex = 0;
            Tabs3DControll.SelectedIndex = newIndex;
        }

Я добавляю привязку к SelectedIndex, чтобы увидеть, если есть что-то, изменяющее значение извне, но значение кажется допустимым, только представление не отображается правильно, и только если я нажимаю на 3d-модель, вкладки переключаются после нажатия кнопки вне HelixViewport3D.

Как переключать вкладки и нажимать на 3D-модели в наборе инструментов helix?

...