我想知道如何以编程方式设置
WPF依赖属性Viewport2DVisual3D.IsVisualHostMaterialProperty.
在xaml我会使用:
<Viewport2DVisual3D> <Viewport2DVisual3D.Geometry> <MeshGeometry3D Positions = "0,0 0,-30.9274,-24.4287 0,-24.4287" TextureCoordinates = "0,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>
但是如何在代码背后完成呢?
解决方法
这很简单
只需为DiffuseMaterial命名即可
<Viewport2DVisual3D> <Viewport2DVisual3D.Geometry> <MeshGeometry3D Positions="0,-24.4287" TextureCoordinates="0,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>
在代码中
像这样设置它
diffuse.SetValue(Viewport2DVisual3D.IsVisualHostMaterialProperty,true);
要么
Viewport2DVisual3D.SetIsVisualHostMaterial(diffuse,true);
属性Viewport2DVisual3D.IsVisualHostMaterialProperty是一个附加属性,可以用上面提到的方式设置