自定义控件,binding map控件

自定义一个toolbar,你希望像arcgis自带的Navigation那个

<esriToolkit:Navigation Map="{Binding ElementName=MyMap}"></esriToolkit:Navigation>

Map="{Binding ElementName=MyMap}"这种方式去实现控件绑定的话,

要使用到silverlight的DependencyProperty的这个东西

 

DependencyProperty 的使用方法具体可以查看http://www.cnblogs.com/yjmyzz/archive/2009/12/23/1630526.html
这个高人写的,
你自定义一个toolbar控件,该控件要实现放大,缩小,平移,全屏,放大镜等常用gis的功能,你希望通过
像自带的Navigation控件那样实现控件绑定,
你自定义了一个toolbar的控件,你也是同过Map属性来绑定Map="{Binding ElementName=MyMap}"控件的话
在后台代码里写上
propdp 在敲两下tab键,自动会出现
       public int MyProperty
        {
            get { return (int)GetValue(MyPropertyProperty); }
            set { SetValue(MyPropertyProperty, value); }
        }
        // Using a DependencyProperty as the backing store for MyProperty.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty MyPropertyProperty =
            DependencyProperty.Register("MyProperty", typeof(int), typeof(ownerclass), new UIPropertyMetadata(0));
当然是修改这个代码了,把MyProperty 改为Map,你仔细观察,系统会自动把这个代码不会的Myroperty都自动修改为Map
接下来是修改你的属性类型,你传递的是Map控件对象,需要把int改为 ESRI.ArcGIS.Client.Map,
get { return (ESRI.ArcGIS.Client.Map)GetValue(MapProperty); }这里会自动修改,
 DependencyProperty.Register("MyProperty", typeof(ESRI.ArcGIS.Client.Map), typeof(ownerclass), new UIPropertyMetadata(0));

关键是修改这里,通过查看msdn了解DependencyProperty.Register使用方法,

  名称说明
 Register(String, Type, Type) 使用指定的属性名称、属性类型和所有者类型注册依赖项属性。
 Register(String, Type, Type, PropertyMetadata) 使用指定的属性名称、属性类型、所有者类型和属性元数据注册依赖项属性。
Register(String, Type, Type, PropertyMetadata, ValidateValueCallback) 使用指定的属性名称、属性类型、所有者类型、属性元数据和属性的值验证回调来注册依赖项属性。

  很好理解 的,
  DependencyProperty.Register("Map", typeof(ESRI.ArcGIS.Client.Map), typeof(toolbar), new PropertyMetadata(new ESRI.ArcGIS.Client.Map(),new PropertyChangedCallback(OnMapPropertyChanged)));
Map属性名,ESRI.ArcGIS.Client.Map属性类型,toolbar类名,new ESRI.ArcGIS.Client.Map(),默认对象,可以设置为null

OnMapPropertyChanged值设置后调用的函数

 

 

private static void OnMapPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
          toolbar ctl = d as toolbar;
            ESRI.ArcGIS.Client.Map map = d.GetValue(toolbar.MapProperty) as ESRI.ArcGIS.Client.Map;

        } 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值