【问题标题】:How to set an attached property programmatically eg. Viewport2DVisual3D.IsVisualHostMaterialProperty如何以编程方式设置附加属性,例如。 Viewport2DVisual3D.IsVisualHostMaterialProperty
【发布时间】:2023-03-31 04:55:02
【问题描述】:

我想知道如何以编程方式设置 WPF 依赖属性 Viewport2DVisual3D.IsVisualHostMaterialProperty。

在我将使用的 xaml 中:

<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>

但是如何在后面的代码中完成呢?

【问题讨论】:

    标签: c# wpf dependency-properties attached-properties


    【解决方案1】:

    其实很简单

    只需为 DiffuseMaterial 命名

    <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>
    

    在代码中

    这样设置

    diffuse.SetValue(Viewport2DVisual3D.IsVisualHostMaterialProperty, true);
    

    Viewport2DVisual3D.SetIsVisualHostMaterial(diffuse, true);
    

    属性Viewport2DVisual3D.IsVisualHostMaterialProperty是一个附加属性,可以通过上述方式设置

    【讨论】:

    • 谢谢,我需要在运行时添加一组 Viewport2DVisual3D 对象,所以我“翻译”了 C# 中的其他指令,但找不到如何设置该特定属性...
    猜你喜欢
    • 1970-01-01
    • 2021-06-22
    • 2023-01-03
    • 2021-05-20
    • 1970-01-01
    相关资源
    最近更新 更多