Как привязать 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;
}
}
У меня не осталось ошибок, но вьюпорт ничего не показывает. Если я добавлю другую модель без привязки, она работает отлично. Должно быть, я делаю что-то ужасно неправильное.