You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Silverlight中使用SimpleFillSymbol引发类型转换错误崩溃求助

解决方案

1. 修正XAML元素嵌套错误

错误核心是将SimpleFillSymbol直接放入了仅支持UIElement类型的容器集合中(比如Map、GraphicsLayer的子元素区域)。SimpleFillSymbol是符号类,不属于UIElement,不能作为容器的直接子元素,需作为Graphic的Symbol属性或Renderer的子元素使用:

错误示例:

<esri:Map x:Name="MyMap">
    <!-- 错误:Map的子元素只能是Layer类型,不能直接放Symbol -->
    <esri:SimpleFillSymbol Color="Red" />
</esri:Map>

正确示例1:为单个Graphic设置符号

<esri:Map x:Name="MyMap">
    <esri:GraphicsLayer>
        <esri:Graphic>
            <!-- 将Symbol嵌套在Graphic的Symbol属性下 -->
            <esri:Graphic.Symbol>
                <esri:SimpleFillSymbol Color="Blue" Fill="#800000FF" BorderThickness="1" BorderBrush="Black" />
            </esri:Graphic.Symbol>
            <esri:Graphic.Geometry>
                <esri:Polygon>
                    <esri:Polygon.Rings>
                        <esri:PointCollection>
                            <esri:Point X="-100" Y="40" />
                            <esri:Point X="-90" Y="40" />
                            <esri:Point X="-90" Y="30" />
                            <esri:Point X="-100" Y="30" />
                        </esri:PointCollection>
                    </esri:Polygon.Rings>
                </esri:Polygon>
            </esri:Graphic.Geometry>
        </esri:Graphic>
    </esri:GraphicsLayer>
</esri:Map>

正确示例2:用Renderer批量设置图层符号

<esri:Map x:Name="MyMap">
    <esri:GraphicsLayer x:Name="MyGraphicsLayer">
        <!-- 通过Renderer统一设置图层内所有Graphic的符号 -->
        <esri:GraphicsLayer.Renderer>
            <esri:SimpleRenderer>
                <esri:SimpleRenderer.Symbol>
                    <esri:SimpleFillSymbol Color="Green" Fill="#8000FF00" />
                </esri:SimpleRenderer.Symbol>
            </esri:SimpleRenderer>
        </esri:GraphicsLayer.Renderer>
    </esri:GraphicsLayer>
</esri:Map>

2. 确保DLL版本兼容性

  • 检查所有引用的ESRI相关DLL(如ESRI.ArcGIS.Client.dll、ESRI.ArcGIS.Client.Toolkit.dll)版本完全一致,避免混合不同版本的SDK文件
  • 确认ArcGIS Silverlight SDK版本与项目目标Silverlight版本匹配(例如SDK 5.0对应Silverlight 5,是目前Silverlight的最终版本)

3. 项目配置验证

  • 右键项目→属性→Silverlight,确认目标Silverlight版本与SDK要求一致
  • 由于主流浏览器已停止支持Silverlight,测试时需使用IE兼容模式或专门的Silverlight测试工具(如Silverlight Developer Runtime)

内容的提问来源于stack exchange,提问作者abramhum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 22:57:18