Как мне преобразовать следующий оператор xaml в код? - PullRequest
0 голосов
/ 02 апреля 2019

Подобные вопросы задавались много раз, но я не могу заставить их работать. Как создать версию C # следующего оператора xalm:

        <h:TubeVisual3D x:Name="PipeVisual" Path="{Binding Pipe.Path}" 
                        TextureCoordinates="{Binding Pipe.TextureCoordinates}"
                        Diameter="{Binding ElementName=PipeDiamSlider, Path= Value }" 
                        Material="{Binding Pipe.Material}"
                        BackMaterial="{Binding Pipe.Material}"
                        ThetaDiv="50" IsPathClosed="False"
                        Visible="{Binding ElementName=PipeIsVisibleCheck, Path=IsChecked}"/>

Где «TubeVisual3D» - это 3D WPF-элемент, определенный в Helix Toolkit, а большинство параметров, связанных привязкой, являются свойствами зависимостей в «TubeVisual3D».

1 Ответ

1 голос
/ 02 апреля 2019

Эквивалент вашей разметки будет следующим:

HelixToolkit.Wpf.TubeVisual3D pipeVisual = new HelixToolkit.Wpf.TubeVisual3D();
BindingOperations.SetBinding(pipeVisual, HelixToolkit.Wpf.ExtrudedVisual3D.PathProperty, new Binding("Pipe.Path"));
BindingOperations.SetBinding(pipeVisual, HelixToolkit.Wpf.ExtrudedVisual3D.TextureCoordinatesProperty, new Binding("Pipe.TextureCoordinates"));
BindingOperations.SetBinding(pipeVisual, HelixToolkit.Wpf.TubeVisual3D.DiameterProperty, new Binding("Value") { Source = PipeDiamSlider });
BindingOperations.SetBinding(pipeVisual, HelixToolkit.Wpf.MeshElement3D.MaterialProperty, new Binding("Pipe.Material"));
BindingOperations.SetBinding(pipeVisual, HelixToolkit.Wpf.MeshElement3D.BackMaterialProperty, new Binding("Pipe.Material"));
pipeVisual.ThetaDiv = 50;
pipeVisual.IsPathClosed = false;
BindingOperations.SetBinding(pipeVisual, HelixToolkit.Wpf.MeshElement3D.VisibleProperty, new Binding("IsChecked") { Source = PipeIsVisibleCheck });
...