How to set an attached property programmatically eg. Viewport2DVisual3D.IsVisualHostMaterialProperty
attached-properties, c#, dependency-properties, wpf
Solution
It's fairly simple
just give the DiffuseMaterial a name
<Viewport2DVisual3D>
<Viewport2DVisual3D.Geometry>
<MeshGeometry3D Positions="0,0,0 0,-30.9274,0 0,-30.9274,-24.4287 0,0,-24.4287"
TextureCoordinates="0,0 0,1 1,1 1,0"
TriangleIndices="0 1 2 0 2 3" />
</Viewport2DVisual3D.Geometry>
<Viewport2DVisual3D.Material>
<DiffuseMaterial x:Name="diffuse" />
</Viewport2DVisual3D.Material>
<Viewport2DVisual3D.Visual>
<Grid>
<Image Source="{StaticResource BG}" />
</Grid>
</Viewport2DVisual3D.Visual>
</Viewport2DVisual3D>
in code
set it like this
diffuse.SetValue(Viewport2DVisual3D.IsVisualHostMaterialProperty, true);
or
Viewport2DVisual3D.SetIsVisualHostMaterial(diffuse, true);
the property `Viewport2DVisual3D.IsVisualHostMaterialProperty` is an attached property which can be set in the above mentioned ways
Problem
I'd like to know how to programmatically set the WPF Dependecy Property Viewport2DVisual3D.IsVisualHostMaterialProperty . In the xaml I would use: ``` <Viewport2DVisual3D> <Viewport2DVisual3D.Geometry> <MeshGeometry3D Positions = "0,0,0 0,-30.9274,0 0,-30.9274,-24.4287 0,0,-24.4287" TextureCoordinates = "0,0 0,1 1,1 1,0" TriangleIndices = "0 1 2 0 2 3"/> </Viewport2DVisual3D.Geometry> <Viewport2DVisual3D.Material> <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/> </Viewport2DVisual3D.Material> <Viewport2DVisual3D.Visual> <Grid> <Image Source="{StaticResource BG}"/> </Grid> </Viewport2DVisual3D.Visual> </Viewport2DVisual3D> ``` But how can it be done in code behind?