首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ArcGIS映射包装到ItemsControl (ItemsControlProxy)中

问将ArcGIS映射包装到ItemsControl (ItemsControlProxy)中
EN

Stack Overflow用户
提问于 2016-10-26 12:08:20
回答 1查看 62关注 0票数 0

我需要将ArcGIS Map从ArcGIS运行时SDKfor.NET绑定到视图模型,该模型提供了一组自定义模型,这些模型表示单个ArcGIS Layer的数据(用于序列化目的)。现在,由于ArcGIS并不是真正的MVVM友好的(大多数‘控件’只是DependencyObject的,没有数据上下文或不支持模板),我的最初想法是将MapView包装在一个自定义控件中,该控件派生自我绑定到自定义类型的ItemsControl,然后为包含正在呈现到映射中的ArcGIS Layer的类型选择适当的DataTemplate。就像这样:

代码语言:javascript
复制
<local:MapViewAdapter ItemsSource="{Binding MyCustomTypes}">
    <local:MapViewAdapter.Resources>
        <DataTemplate DataType="{x:Type ArcGISDrawLayer}">
            <GraphicsLayer GraphicsSource="{Binding LayerGraphics}" />
        </DataTemplate>
        ...
    </local:MapViewAdapter.Resources> 
</local:MapViewAdapter>

MapViewAdapter应该在内部创建一个新的MapView以及它的Map,然后将指定的DataTemplate呈现到Map的LayerCollection中。

但是,我不知道如何在不重新实现大多数ArcGIS控件的情况下完成这一任务。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-28 07:26:17

现在,由于ArcGIS并不是真正的MVVM友好(大多数‘控件’只是DependencyObjects,没有数据上下文或不支持模板)

只有UI控件有数据文本,而像图层这样的非UI对象自然没有模板,因为这只适用于UI对象。这就是XAML的工作原理。相反,在对绑定到Map的数据建模时,您应该考虑您的MapView,而不是映射中的各个层。

您可以创建一个IValueConverter,将图形层转换为一个映射,然后绑定到您的地图上,或者更好的是,您的模型中有简单的地图。

代码语言:javascript
复制
<esri:MapView Map="{Binding Map}" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40261875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档