I do some updates for your code as below shown:
<Viewbox>
<Canvas Width="321" Height="201">
<Viewport3D ClipToBounds="True" Width="150" Height="150" Canvas.Left="0" Canvas.Top="10">
<Viewport3D.Camera>
<PerspectiveCamera Position="0,0,2" LookDirection="0,0,-1" FieldOfView="60" />
</Viewport3D.Camera>
<Viewport3D.Children>
<ModelVisual3D>
<ModelVisual3D.Content>
<SpotLight x:Name="mySpotLight" InnerConeAngle="20" OuterConeAngle="20" Color="White" Direction="0,0,-1" Position="1,1,6" Range="20"/>
</ModelVisual3D.Content>
</ModelVisual3D>
<Viewport2DVisual3D>
<Viewport2DVisual3D.Material>
<DiffuseMaterial Brush="White" Viewport2DVisual3D.IsVisualHostMaterial="True" />
</Viewport2DVisual3D.Material>
<Viewport2DVisual3D.Geometry>
<MeshGeometry3D Positions="0,0,0 1,0,0 1,1,0 0,1,0" TextureCoordinates="0,1 1,1 1,0 0,0" TriangleIndices="0,1,2 2,3,0" />
</Viewport2DVisual3D.Geometry>
<Border Background="White">
<Grid Margin="100">
<TextBlock Text="你好" Foreground="Black" />
</Grid>
</Border>
</Viewport2DVisual3D>
</Viewport3D.Children>
</Viewport3D>
</Canvas>
</Viewbox>
And the result picture is:
Is this what you want? If it is not, please show me more details about your question or post an effect picture.
If the response is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.