Я новичок в использовании WPF. Я показываю трехмерный объект в моем программном обеспечении winform. С помощью элементов управления elementHost я могу правильно загрузить объект. Но когда я вызвал тестовую функцию для поворота объекта, я обнаружил, что значение изменилось. Я прервал программу, чтобы проверить. Но объект, показанный в пользовательском интерфейсе, не обновился. Как я могу выполнить sh функцию интерфейса UI при изменении AxisAngleRotation3D?
Ниже приведен упрощенный тестовый код. Первый блок кода - это model.xaml.
<ModelVisual3D x:Name="World">
<ModelVisual3D.Transform>
<Transform3DGroup>
<ScaleTransform3D ScaleZ="1.0" ScaleY="1.0" ScaleX="1.0"/>
<RotateTransform3D d:EulerAngles="90.806,-49.429,-19.335" >
<RotateTransform3D.Rotation>
<AxisAngleRotation3D x:Name="myAxis" Axis="0,1,0" Angle="10"/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
<ModelVisual3D x:Name="DefaultGroup">
<ModelVisual3D.Content>
I omit this part which is not related to the topic.
</ModelVisual3D.Content>
</ModelVisual3D>
</ModelVisual3D>
Второй блок кода - model.xaml.cs.
public void rotate3D()
{
Vector3D vector = new Vector3D(0,1,1);
double angle = 100;
AxisAngleRotation3D axisAngleRotation3D = new AxisAngleRotation3D(vector, angle);
myAxis = axisAngleRotation3D;
}
Третий блок кода - это функция, вызываемая пользователем, например нажатие кнопки.
private void ControlRotateModel()
{
try
{
((model)elementHost.Child).rotate3D();
}
catch (Exception ex)
{
//
}
}