Как привязать ModelVisual3D к Viewport3D

Я пытаюсь привязать ModelVisual3D к Viewport3D. Это HelixViewport, но я не думаю, что это моя проблема.

      <DataTemplate>
    <StackPanel Orientation="Vertical">
        <h:HelixViewport3D ShowViewCube="False" MinHeight="80"
                ZoomExtentsWhenLoaded="True">
            <ModelVisual3D
                    Content="{Binding CargoVisual, Converter={StaticResource VisualModel3DConverter}}" />
            <h:SunLight />
        </h:HelixViewport3D>
        <Label Content="{Binding Tag}" Foreground="{DynamicResource Foreground}"
                HorizontalAlignment="Center" />
    </StackPanel>
</DataTemplate>

Мой Juliet.CargoVisual — это ModelVisual3D, но я получил ошибку привязки

Не удается преобразовать тип «Juliet.CargoVisual» в «System.Windows.Media.Media3D.Model3D». Рассмотрите возможность установки конвертера на привязку.

Вот этот преобразователь:

      public class VisualModel3DConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is ModelVisual3D modelVisual3D)
        {
            // for testing purposes, returning a new BoxVisual3D
            return new BoxVisual3D
            {
                Center = new Point3D(),
                Length = 1
            };
        }
        else
        {
            return null;
        }

    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return null;
    }
}

У меня не осталось ошибок, но вьюпорт ничего не показывает. Если я добавлю другую модель без привязки, она работает отлично. Должно быть, я делаю что-то ужасно неправильное.

0 ответов

Другие вопросы по тегам