{"id":43,"date":"2009-04-15T20:57:00","date_gmt":"2009-04-15T20:57:00","guid":{"rendered":"http:\/\/blog.newnaw.com\/?p=43"},"modified":"2009-04-15T20:57:00","modified_gmt":"2009-04-15T20:57:00","slug":"arcgis-api-for-silverlight%e5%bc%80%e5%8f%91%e5%85%a5%e9%97%a8%ef%bc%883%ef%bc%89%ef%bc%9awidgets","status":"publish","type":"post","link":"https:\/\/blog.newnaw.com\/?p=43","title":{"rendered":"ArcGIS API for Silverlight\u5f00\u53d1\u5165\u95e8\uff083\uff09\uff1aWidgets"},"content":{"rendered":"<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Widgets\u7ffb\u8bd1\u8fc7\u6765\u662f\u5c0f\u73a9\u5177\u3002\u5982\u679c\u4f7f\u7528\u8fc7Dojo\u6216\u8005ExtJS\u7b49js\u6846\u67b6\u80af\u5b9a\u4f1a\u4e86\u89e3\u5230\u8fd9\u4e2a\u201c\u5c0f\u73a9\u5177\u201d\u4e5f\u6709\u5927\u7528\u5904\uff0c\u80fd\u591f\u5728\u5f88\u5927\u7a0b\u5ea6\u4e0a\u51cf\u5c11\u6211\u4eec\u7684\u5de5\u4f5c\u91cf,\u5feb\u901f\u5b8c\u6210\u529f\u80fd\u9700\u6c42\u3002\u80fd\u51cf\u5c11\u591a\u5927\u5de5\u4f5c\u91cf\u5462\uff1f\u8ba9\u6211\u4eec\u5148\u6765\uff0c<a href=\"http:\/\/www.newnaw.com\/pub\/sl\/031.html\" target=\"_blank\">\u70b9\u51fb\u8fd9\u91cc<\/a>\uff0c\u770b\u4e00\u4e2a\u4f8b\u5b50\u3002<\/p>\n<p><a onblur=\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href=\"http:\/\/3.bp.blogspot.com\/_DD8LUY9p6iU\/SeXe23FI7QI\/AAAAAAAAAGs\/zDDTwVW_3pI\/s1600-h\/031sliderbar.png\" target=\"_blank\"><img decoding=\"async\" style=\"margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 303px;\" src=\"http:\/\/3.bp.blogspot.com\/_DD8LUY9p6iU\/SeXe23FI7QI\/AAAAAAAAAGs\/zDDTwVW_3pI\/s400\/031sliderbar.png\" alt=\"\" id=\"BLOGGER_PHOTO_ID_5324907168515288322\" border=\"0\" \/><\/a><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u524d\u4e24\u8282\u7684\u5730\u56fe\u4e2d\uff0c\u603b\u611f\u89c9\u5c11\u70b9\u4ec0\u4e48\u2026\u2026\u5bf9\uff0c\u5c31\u662f\u4e00\u4e2asliderbar\uff0c\u6709\u4e86\u5b83\u611f\u89c9\u5c31\u50cf\u6c7d\u8f66\u6709\u4e86\u65b9\u5411\u76d8\u4e00\u6837\uff0c\u80fd\u591f\u63a7\u5236\u65b9\u5411\u4e86\u3002\u90a3\u4e48\u6765\u770b\u770b\u5b9e\u73b0\u4e0a\u9762\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\u7684\u6ed1\u5757\u6761\u9700\u8981\u505a\u4ec0\u4e48\u5de5\u4f5c\u5427\u3002<br \/>\u5728silverlight\u4e2d\u521b\u5efa\u4e00\u4e2aUserControl\uff0c\u628a\u4e0a\u9762sliderbar\u7684\u5916\u89c2\u548c\u529f\u80fd\u90fd\u5c01\u88c5\u5728\u91cc\u9762\u3002<br \/>\u6765\u770b\u5177\u4f53\u5de5\u4f5c\u3002vs\u4e2d\uff0c\u5728silverlight\u5de5\u7a0b\u4e0a\u53f3\u952e\u5355\u51fb\uff0cadd\uff0cnew item\uff0c\u9009\u62e9silverlight user control\uff0c\u8d77\u540d\u53ebmapslider\uff0c\u5728mapslider.xaml\u4e2d\u586b\u5982\u4e0b\u4ee3\u7801\uff1a<br \/><code><usercontrol x:class=\"customcontrol.mapslider\"><br \/>  xmlns=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\/presentation\"<br \/>  xmlns:x=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\"<br \/>  xmlns:esri=\"clr-namespace:ESRI.ArcGIS;assembly=ESRI.ArcGIS\"><br \/> <grid x:name=\"slidergrid\" horizontalalignment=\"Left\" verticalalignment=\"Center\" background=\"Azure\" margin=\"20\"><br \/> <stackpanel orientation=\"Vertical\"><br \/> <button x:name=\"btnzoomin\" content=\"+\" click=\"btnzoomin_Click\"><br \/> <slider x:name=\"sliderLOD\" orientation=\"Vertical\" height=\"200\" smallchange=\"1\" largechange=\"1\" minimum=\"0\" cursor=\"Hand\" valuechanged=\"slider1_ValueChanged\"><br \/> <\/slider><\/button><button x:name=\"btnzoomout\" content=\"-\" click=\"btnzoomout_Click\"><br \/> <\/button><\/stackpanel><br \/> <\/grid><br \/><\/usercontrol><\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u4e0a\u9762\u8fd9\u4e9b\u5c31\u662f\u6ed1\u5757\u6761\u7684\u5916\u89c2\uff0c\u63a5\u4e0b\u6765\u770b\u529f\u80fd\u90e8\u5206\u3002\u5927\u81f4\u601d\u8def\u662f\u5728mapslider\u7c7b\u4e2d\u8bbe\u7f6e\u4e00\u4e2a\u516c\u5171\u5c5e\u6027Map\uff0c\u5c31\u662f\u9700\u8981\u64cd\u4f5c\u7684\u5730\u56fe\u4e86\uff0c\u4f46\u8fd9\u4e2a\u5c5e\u6027\u4e0d\u662fESRI.ArcGIS.Map\uff0c\u800c\u662f\u53e6\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7c7b\u3002\u4e3a\u4ec0\u4e48\u8981\u8fd9\u4e48\u505a\uff1f\u56e0\u4e3a\u8fd9\u4e2a\u81ea\u5b9a\u4e49\u7c7b\u9700\u8981\u5b9e\u73b0INotifyPropertyChanged\u63a5\u53e3\uff0c\u5f53\u6211\u4eec\u628a\u81ea\u5df1\u7684Map\u63a7\u4ef6\u4f5c\u4e3amapslider\u7684\u5c5e\u6027\u8d4b\u503c\u7684\u65f6\u5019\uff0c\u8fd9\u4e2aMap\u9700\u8981\u505a\u53e6\u5916\u4e00\u4e9b\u5de5\u4f5c\u3002\u770b\u4ee3\u7801\u5427\uff0c\u4e0d\u592a\u660e\u767d\u7684\u8bdd\u5c31\u8981\u52a0\u5f3a\u5bf9silverlight\u4e2ddata binding\u7684\u5b66\u4e60\u3002\u5728mapslider.xaml.cs\u9875\u9762\u4e2d\u586b\u5165\u4e00\u4e0b\u4ee3\u7801\uff1a<br \/><code>using System;<br \/>using System.Collections.Generic;<br \/>using System.Linq;<br \/>using System.Net;<br \/>using System.Windows;<br \/>using System.Windows.Controls;<br \/>using System.Windows.Documents;<br \/>using System.Windows.Input;<br \/>using System.Windows.Media;<br \/>using System.Windows.Media.Animation;<br \/>using System.Windows.Shapes;<\/p>\n<p>using System.ComponentModel;<\/p>\n<p>namespace customcontrol<br \/>{<br \/>  public partial class mapslider : UserControl<br \/>  {<br \/>      private mymap map = new mymap();<br \/>      public ESRI.ArcGIS.Map Map<br \/>      {<br \/>          get<br \/>          {<br \/>              return map.Map;<br \/>          }<br \/>          set<br \/>          {<br \/>              map.Map=value;<br \/>              if (map.Map != null)<br \/>              {<br \/>                  Map.ExtentChanged += new EventHandler<esri.arcgis.extenteventargs>(map_ExtentChanged);<br \/>                  Map.SnapToLevels = true;<br \/>                  ((ESRI.ArcGIS.ArcGISTiledMapServiceLayer)Map.Layers[0]).Initialized += new EventHandler<eventargs>(layer0_initialized);<br \/>              }<\/p>\n<p>          }<br \/>      }<\/p>\n<p>      private void layer0_initialized(object o,EventArgs e)<br \/>      {<br \/>          sliderLOD.Maximum = ((ESRI.ArcGIS.ArcGISTiledMapServiceLayer)Map.Layers[0]).TileInfo.Lods.Length - 1;<br \/>      }<\/p>\n<p>      public mapslider()<br \/>      {<br \/>          InitializeComponent();<br \/>      }<\/p>\n<p>      private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)<br \/>      {<br \/>          if (map.Map!=null)<br \/>          {<br \/>              Map.ZoomToResolution(((ESRI.ArcGIS.ArcGISTiledMapServiceLayer)Map.Layers[0]).TileInfo.Lods[Convert.ToInt32(e.NewValue)].Resolution);<br \/>          }<br \/>      }<\/p>\n<p>      private void map_ExtentChanged(object o, ESRI.ArcGIS.ExtentEventArgs e)<br \/>      {<br \/>          ESRI.ArcGIS.ArcGISTiledMapServiceLayer layer = Map.Layers[0] as ESRI.ArcGIS.ArcGISTiledMapServiceLayer;<br \/>          int i;<br \/>          for (i = 0; i < layer.TileInfo.Lods.Length; i++)<br \/>          {<br \/>              if (Map.Resolution == layer.TileInfo.Lods[i].Resolution)<br \/>                  break;<br \/>          }<\/p>\n<p>          sliderLOD.Value = i;<br \/>      }<\/p>\n<p>      private void btnzoomin_Click(object sender, RoutedEventArgs e)<br \/>      {<br \/>          sliderLOD.Value += 1;<br \/>      }<\/p>\n<p>      private void btnzoomout_Click(object sender, RoutedEventArgs e)<br \/>      {<br \/>          sliderLOD.Value -= 1;<br \/>      }<br \/>  }<\/p>\n<p>  \/\/\u6267\u884c\u4e86\u8fd9\u4e2a\u63a5\u53e3\u540e\uff0c\u5f53\u5728\u4e3b\u9875\u9762page.xaml.cs\u4e2d\u7ed9Map\u8d4b\u503c\u7684\u65f6\u5019\uff0c\u5c31\u80fd\u8fd4\u5230set\u8bed\u53e5\u4e2d\uff0c\u4ee5\u4fbf\u6267\u884c\u7ed1\u5b9a\u4e8b\u4ef6\u7684\u4ee3\u7801<br \/>  public class mymap:INotifyPropertyChanged<br \/>  {<br \/>      public event PropertyChangedEventHandler PropertyChanged;<br \/>      private ESRI.ArcGIS.Map map;<br \/>      public ESRI.ArcGIS.Map Map<br \/>      {<br \/>          get{return map;}<br \/>          set<br \/>          {<br \/>              map = value;<br \/>              if (PropertyChanged!=null)<br \/>              {<br \/>                  PropertyChanged(this, new PropertyChangedEventArgs(\"Map\"));<br \/>              }<br \/>          }<br \/>      }<br \/>  }<br \/>}<br \/><\/double><\/eventargs><\/esri.arcgis.extenteventargs><\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u505a\u5b8c\u5c01\u88c5\u7684\u5de5\u4f5c\uff0c\u6765\u770b\u5982\u4f55\u5728page.xaml\u4e2d\u4f7f\u7528\u8fd9\u4e2a\u63a7\u4ef6\u3002\u53ea\u9700\u8981\u4e09\u884c\u4ee3\u7801\uff1a1\u3001\u6ce8\u518cuser control\u7684\u547d\u540d\u7a7a\u95f4\uff08\u548c\u5bf9Silverlight API\u7684\u5f15\u7528\u662f\u4e00\u6837\u7684\uff0c\u653e\u5728\u9875\u9762\u4e2d\u7684\u6839\u5143\u7d20UserControl\u91cc\uff09\uff1a<br \/><code>xmlns:uc=\"clr-namespace:customcontrol\"<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2\u3001\u5728\u9875\u9762\u4e2d\u6dfb\u52a0\u8fd9\u4e2aslider\uff1a<br \/><code><grid x:name=\"LayoutRoot\" background=\"White\"><br \/> <!--\u5730\u56fe\u5728\u8fd9\u91cc--><\/p>\n<p> <uc:mapslider x:name=\"mapslider1\"><br \/><\/uc:mapslider><\/grid><\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3\u3001\u5728\u521d\u59cb\u5316\u7684\u65f6\u5019\u5bf9\u6211\u4eec\u81ea\u5b9a\u4e49\u63a7\u4ef6\u7684Map\u5c5e\u6027\u8d4b\u503c\uff08page.xaml.cs\u4e2d\uff09\uff1a<br \/><code> public Page()<br \/>      {<br \/>          InitializeComponent();<br \/>          mapslider1.Map = Map1;<br \/>      }<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5230\u6b64\u5e94\u8be5\u6709\u8fd9\u4e2a\u611f\u89c9\uff0c\u5c01\u88c5\u6bd4\u8f83\u9ebb\u70e6\uff0c\u4f46\u4f7f\u7528\u5c01\u88c5\u597d\u7684\u63a7\u4ef6\u975e\u5e38\u7b80\u4fbf\u3002\u8fd9\u5c31\u662fWidgets\u5e26\u7ed9\u6211\u4eec\u7684\u597d\u5904\u3002\u76ee\u524d\u7684beta\u7248\u4e2d\uff0cSilverlight API\u5df2\u7ecf\u66ff\u6211\u4eec\u5b8c\u62105\u4e2aWidgets\u7684\u5c01\u88c5\uff0c\u5b83\u4eec\u5206\u522b\u662f\uff1aMagnifier\uff0cToolBar\uff0cBookMark\uff0cNavigation\uff0cMapTip\uff0c\u5176\u4e2dToolBar\u5185\u90e8\u4f7f\u7528\u4e86ToolBarItemCollection\u548cToolBarItem\u7b49\u7c7b\u3002\u8fd8\u662f\u901a\u8fc7\u4e00\u4e2a\u4f8b\u5b50\uff0c\u6765\u770b\u770b\u8fd9\u51e0\u4e2a\u63a7\u4ef6\u90fd\u957f\u4ec0\u4e48\u6837\u5427\uff08<a href=\"http:\/\/www.newnaw.com\/pub\/sl\/032.html\" target=\"_blank\">\u70b9\u51fb\u8fd9\u91cc<\/a>\uff09\uff1a<\/p>\n<p><a onblur=\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href=\"http:\/\/1.bp.blogspot.com\/_DD8LUY9p6iU\/SeX0Lq6fqCI\/AAAAAAAAAG0\/Ge9XYiTByQ0\/s1600-h\/032widgets.png\" target=\"_blank\"><img decoding=\"async\" style=\"display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 299px;\" src=\"http:\/\/1.bp.blogspot.com\/_DD8LUY9p6iU\/SeX0Lq6fqCI\/AAAAAAAAAG0\/Ge\n9XYiTByQ0\/s400\/032widgets.png\" border=\"0\" alt=\"\" id=\"BLOGGER_PHOTO_ID_5324930615770851362\" \/><\/a><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MapTip\u9700\u8981\u4f7f\u7528\u5230Query Task\uff0c\u4ee5\u540e\u7684\u5c0f\u8282\u4e2d\u518d\u6d89\u53ca\u5230\u3002\u73b0\u5728\u5206\u522b\u719f\u6089\u4e00\u4e0b\u8fd9\u51e0\u4e2aWidgets\u7684\u7528\u6cd5\u3002<br \/>1\u3001ToolBar\u548cMagnifier\uff1a<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u8fd9\u4e2a\u548cADF\u5f00\u53d1\u4e2d\u7684ToolBar\uff08\u5de5\u5177\u6761\uff09\u662f\u4e00\u6837\u7684\uff0c\u91cc\u9762\u53ef\u4ee5\u6dfb\u52a0ToolItem\uff08\u5de5\u5177\uff09\uff0c\u5df2\u5b9e\u73b0\u5404\u79cd\u529f\u80fd\uff0c\u6bd4\u5982\u5e73\u79fb\uff0c\u7f29\u653e\u7b49\u3002silverlight\u4e2d\u5f53\u7136\u8981\u6709\u4e00\u4e9b\u6bd4\u8f83\u597d\u770b\u7684\u6548\u679c\u4e86\uff0c\u6bd4\u5982\u628a\u9f20\u6807\u653e\u5728\u5de5\u5177\u6761\u4e0a\u9009\u62e9\u5de5\u5177\u7684\u65f6\u5019\uff0c\u4f1a\u6709\u653e\u5927\u6548\u679c\uff0c\u8fd9\u4e2a\u6548\u679c\u662f\u9ed8\u8ba4\u7684\uff0c\u4e0d\u80fd\u8bbe\u7f6e\uff1b\u70b9\u51fb\u4e00\u4e2a\u5de5\u5177\u65f6\uff0c\u8be5\u5de5\u5177\u4f1a\u8df3\u52a8\u4e00\u4e0b\uff0c\u8fd9\u4e2a\u662fToolbarItemClickEffect\u4e2d\u7684Bounce\u6548\u679c\uff08\u76ee\u524d\u53ea\u6709Bounce\u548cNone\u4e24\u4e2a\u9009\u62e9\uff09\uff0c\u4e5f\u662f\u9ed8\u8ba4\u7684\u3002\u6b64\u4f8b\u4e2dToolBar\u91cc\u9762\u6709\u4e09\u4e2aToolBarItem\uff0c\u5206\u522b\u662fPan\uff0cFullExtent\u548cMagnifier\uff08\u672c\u8eab\u4e5f\u662f\u4e00\u4e2aWidget\uff09\uff0c\u4e0b\u9762\u662fToolBar\u7684\u5e03\u5c40\uff1a<br \/><code><grid height=\"110\" horizontalalignment=\"Right\" verticalalignment=\"Top\" margin=\"0,10,10,0\"><br \/> <rectangle fill=\"#22000000\" radiusx=\"10\" radiusy=\"10\" margin=\"0,4,0,0\"><br \/> <\/rectangle><rectangle fill=\"#775C90B2\" stroke=\"Gray\" radiusx=\"10\" radiusy=\"10\" margin=\"0,0,0,5\"><br \/> <\/rectangle><rectangle fill=\"#66FFFFFF\" stroke=\"DarkGray\" radiusx=\"5\" radiusy=\"5\" margin=\"10,10,10,15\"><br \/> <stackpanel orientation=\"Vertical\"><br \/> <esriwidgets:toolbar x:name=\"MyToolbar\" maxitemheight=\"80\" maxitemwidth=\"80\"><br \/>            VerticalAlignment=\"Top\" HorizontalAlignment=\"Center\"<br \/>            ToolbarItemClicked=\"MyToolbar_ToolbarItemClicked\" <br \/>            ToolbarItemClickEffect=\"Bounce\"<br \/>            Width=\"250\" Height=\"80\"><br \/> <esriwidgets:toolbar.items><br \/> <esriwidgets:toolbaritemcollection><br \/> <esriwidgets:toolbaritem text=\"Pan\"><br \/> <esriwidgets:toolbaritem.content><br \/> <image source=\"img\/i_pan.png\" stretch=\"UniformToFill\" margin=\"5\"><br \/> <\/image><\/esriwidgets:toolbaritem.content><br \/> <\/esriwidgets:toolbaritem><br \/> <esriwidgets:toolbaritem text=\"Full Screen\"><br \/> <esriwidgets:toolbaritem.content><br \/> <image source=\"img\/i_globe.png\" stretch=\"UniformToFill\" margin=\"5\"><br \/> <\/image><\/esriwidgets:toolbaritem.content><br \/> <\/esriwidgets:toolbaritem><br \/> <esriwidgets:toolbaritem text=\"Full Screen\"><br \/> <esriwidgets:toolbaritem.content><br \/> <image source=\"img\/magglass.png\" stretch=\"UniformToFill\" margin=\"5\"><br \/>                                   MouseLeftButtonDown=\"Image_MouseLeftButtonDown\"\/><br \/> <\/image><\/esriwidgets:toolbaritem.content><br \/> <\/esriwidgets:toolbaritem><br \/> <\/esriwidgets:toolbaritemcollection><br \/> <\/esriwidgets:toolbar.items><br \/> <\/esriwidgets:toolbar><br \/> <textblock x:name=\"StatusTextBlock\" text=\"\" fontweight=\"Bold\" horizontalalignment=\"Center\"><br \/> <\/textblock><\/stackpanel><br \/><\/rectangle><\/grid><\/code><br \/>\u7136\u540e\u662fcode-behind\u5185\u5bb9\uff1a<br \/><code>private void MyToolbar_ToolbarItemClicked(object sender, ESRI.ArcGIS.Widgets.SelectedToolbarItemArgs e)<br \/>        {<br \/>            switch (e.Index)<br \/>            {<br \/>                case 0:<br \/>                    \/\/pan<br \/>                    break;<br \/>                case 1:<br \/>                    Map1.ZoomTo(Map1.Layers.GetFullExtent());<br \/>                    break;<br \/>                case 2:<br \/>                    break;<br \/>            }<br \/>        }<\/p>\n<p>        private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)<br \/>        {<br \/>            MyMagnifier.Enabled = !MyMagnifier.Enabled;<br \/>        }<\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u522b\u5fd8\u4e86\u5728page\u7684\u6784\u9020\u51fd\u6570\u4e2d\u52a0\u4e00\u53e5\uff1aMyMagnifier.Initialize(Map1);\u3002\u53ef\u4ee5\u770b\u51fa\uff0cPan\u5de5\u5177\u4e0d\u9700\u8981\u4efb\u4f55\u4ee3\u7801\uff0c\u56e0\u4e3a\u5730\u56fe\u672c\u8eab\u7684\u9ed8\u8ba4\u52a8\u4f5c\u5c31\u662fPan\uff0c\u800cFullExtent\u4e5f\u662f\u5229\u7528\u4e86Map\u7684ZoomTo()\u3002\u653e\u5927\u955c\u7684\u5de5\u5177\u662f\u5728\u8be5\u56fe\u7247\u88ab\u9f20\u6807\u5de6\u952e\u6309\u4f4f\u7684\u8fc7\u7a0b\u4e2d\u6fc0\u6d3b\u7684\uff08\u8bbe\u7f6eenabled\u5c5e\u6027\uff09\uff0c\u53ea\u8981\u9f20\u6807\u5de6\u952e\u6ca1\u6709\u6309\u4f4f\u653e\u5927\u955c\u56fe\u7247\uff0c\u8be5Widget\u5c31\u8bbe\u7f6e\u4e3a\u4e0d\u53ef\u7528\u3002\u6bd4\u8f83\u6709\u7528\u7684\u662f\u6211\u4eec\u53ef\u4ee5\u5355\u72ec\u8bbe\u7f6e\u653e\u5927\u955c\u81ea\u5df1\u7684\u56fe\u5c42\u53ca\u653e\u5927\u500d\u6570\uff0c\u8fd9\u91cc\u653e\u5927\u955c\u4f7f\u7528\u7684\u5c31\u662fStreetMap\uff0c\u500d\u6570\u4e3a3\u3002<br \/>2\u3001BookMark\uff1a<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u8fd9\u4e2a\u529f\u80fd\u548cArcMap\uff089.3\u7248\u672c\uff09\u4e2d\u7684BookMark\u662f\u4e00\u6837\u7684\uff0c\u53ef\u4ee5\u50cf\u770b\u4e66\u4e00\u6837\uff0c\u4e3a\u5f53\u524d\u5730\u56fe\u8303\u56f4\u8bbe\u7f6e\u4e00\u4e2a\u4e66\u7b7e\uff0c\u4fbf\u4e8e\u5176\u4ed6\u65f6\u5019\u5feb\u901f\u5b9a\u4f4d\u5230\u8be5\u8303\u56f4\u3002\u800c\u67e5\u770bAPI\u4e2d\u7684Bookmark.MapBookmark\u7c7b\uff08\u53ef\u4ee5\u5229\u7528\u5b83\u5bf9\u4e66\u7b7e\u7684\u5185\u5bb9\u8fdb\u884c\u5355\u4e2a\u6dfb\u52a0\u6216\u5220\u9664\uff09\uff0c\u53ef\u4ee5\u53d1\u73b0\u5176\u5b9e\u6bcf\u4e2a\u4e66\u7b7e\u5b58\u50a8\u7684\u5185\u5bb9\u662f\u4e00\u4e2aExtent\uff0c\u7136\u540e\u518d\u8d77\u4e00\u4e2a\u540d\u5b57\u5c31\u53ef\u4ee5\u4e86\u3002\u6dfb\u52a0\u4e86bookmark widget\u540e\u4f3c\u4e4e\u4f1a\u9020\u6210vs\u4e2d\u7684preview\u7a97\u53e3\u51fa\u9519\u3002<br \/><code><!--bookmark--><br \/> <canvas><br \/> <esriwidgets:bookmark x:name=\"MyBookmarks\" width=\"125\" horizontalalignment=\"Left\" verticalalignment=\"Top\"><br \/>             Margin=\"20\" Background=\"#99257194\" BorderBrush=\"#FF92a8b3\" Foreground=\"Black\" <br \/>             Loaded=\"MyBookmarks_Loaded\" \/><br \/> <\/esriwidgets:bookmark><\/canvas><\/code><br \/>page.xaml.cs\u4e2d\uff1a<br \/><code>private void MyBookmarks_Loaded(object sender, RoutedEventArgs e)<br \/>        {<br \/>            MyBookmarks.Map = Map1;<br \/>        }<\/code><br \/>3\u3001Navigation\uff1a<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u8fd9\u4e2a\u5bfc\u822a\u6761\u5de5\u5177\u662f\u76ee\u524d\u7f51\u7edc\u5730\u56fe\u5fc5\u5907\u7684\u4e00\u4e2a\u63a7\u4ef6\uff0c\u4f46silverlight\u7684\u529f\u80fd\uff0c\u53ef\u4ee5\u8f7b\u6613\u5b9e\u73b0\u5730\u56fe\u7684\u65cb\u8f6c\uff08\u5176\u5b9e\u4e5f\u53ef\u4ee5\u5728\u4ee3\u7801\u4e2d\u901a\u8fc7Map.Rotation\u5c5e\u6027\u6765\u8bbe\u7f6e\uff09\u3002\u7ecf\u8bd5\u9a8c\u8fd9\u4e2awidget\u53ea\u80fd\u653e\u5728StackPanel\u6216Grid\u5bb9\u5668\u91cc\uff0c\u5982\u679c\u653e\u5728Canvas\u91cc\u7684\u8bdd\u5730\u56fe\u4e2d\u4e0d\u4f1a\u663e\u793a\u3002<br \/><code><!--navigation bar.must be in a stackpanel--><br \/> <stackpanel horizontalalignment=\"Left\" verticalalignment=\"Bottom\"><br \/> <esriwidgets:navigation x:name=\"MyNavigation\" margin=\"5\"><br \/> <\/esriwidgets:navigation><\/stackpanel><\/code><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u540c\u6837\u5728page\u7684\u6784\u9020\u51fd\u6570\u4e2d\u6dfb\u52a0\u4e00\u53e5\uff1aMyNavigation.Map = Map1;\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;API\u4e2d\u7684Widgets\u53ef\u4ee5\u7b80\u5316\u6211\u4eec\u7684\u5de5\u4f5c\uff0c\u62ff\u6765\u5373\u7528\u3002\u4f46\u660e\u663e\u7684\u7f3a\u9677\u5c31\u662f\u4e0d\u7075\u6d3b\uff0c\u5982\u679c\u60f3\u4f7f\u81ea\u5df1\u7684\u63a7\u4ef6\u4e0d\u90a3\u4e48\u5343\u7bc7\u4e00\u5f8b\u7684\u8bdd\uff0c\u5c31\u9700\u8981\u81ea\u5df1\u8fdb\u884c\u5f00\u53d1\u5de5\u4f5c\u4e86\u3002<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u597d\u4e86\uff0c\u4e0b\u4e00\u8282\u4e2d\u6765\u5b66\u4e60\u4e00\u4e2a\u6bd4\u8f83\u91cd\u8981\u7684\u6982\u5ff5\uff1aGraphicsLayer\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Widgets\u7ffb\u8bd1\u8fc7\u6765\u662f\u5c0f\u73a9\u5177\u3002\u5982\u679c\u4f7f\u7528\u8fc7Dojo\u6216\u8005ExtJS\u7b49js\u6846\u67b6\u80af\u5b9a\u4f1a\u4e86\u89e3\u5230\u8fd9\u4e2a\u201c\u5c0f\u73a9\u5177\u201d\u4e5f\u6709\u5927\u7528\u5904\uff0c\u80fd\u591f\u5728\u5f88\u5927\u7a0b\u5ea6\u4e0a\u51cf\u5c11\u6211\u4eec\u7684\u5de5\u4f5c\u91cf,\u5feb\u901f\u5b8c\u6210\u529f\u80fd\u9700\u6c42\u3002\u80fd\u51cf\u5c11\u591a\u5927\u5de5\u4f5c\u91cf\u5462\uff1f\u8ba9\u6211\u4eec\u5148\u6765\uff0c\u70b9\u51fb\u8fd9\u91cc\uff0c\u770b\u4e00\u4e2a\u4f8b\u5b50\u3002 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u524d\u4e24\u8282\u7684\u5730\u56fe\u4e2d\uff0c\u603b\u611f\u89c9\u5c11\u70b9\u4ec0\u4e48\u2026\u2026\u5bf9\uff0c\u5c31\u662f\u4e00\u4e2asliderbar\uff0c\u6709\u4e86\u5b83\u611f\u89c9\u5c31\u50cf\u6c7d\u8f66\u6709\u4e86\u65b9\u5411\u76d8\u4e00\u6837\uff0c\u80fd\u591f\u63a7\u5236\u65b9\u5411\u4e86\u3002\u90a3\u4e48\u6765\u770b\u770b\u5b9e\u73b0\u4e0a\u9762\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\u7684\u6ed1\u5757\u6761\u9700\u8981\u505a\u4ec0\u4e48\u5de5\u4f5c\u5427\u3002\u5728silverlight\u4e2d\u521b\u5efa\u4e00\u4e2aUserControl\uff0c\u628a\u4e0a\u9762sliderbar\u7684\u5916\u89c2\u548c\u529f\u80fd\u90fd\u5c01\u88c5\u5728\u91cc\u9762\u3002\u6765\u770b\u5177\u4f53\u5de5\u4f5c\u3002vs\u4e2d\uff0c\u5728silverlight\u5de5\u7a0b\u4e0a\u53f3\u952e\u5355\u51fb\uff0cadd\uff0cnew item\uff0c\u9009\u62e9silverlight user control\uff0c\u8d77\u540d\u53ebmapslider\uff0c\u5728mapslider.xaml\u4e2d\u586b\u5982\u4e0b\u4ee3\u7801\uff1a xmlns=&#8221;http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\/presentation&#8221; xmlns:x=&#8221;http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml&#8221; xmlns:esri=&#8221;clr-namespace:ESRI.ArcGIS;assembly=ESRI.ArcGIS&#8221;> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u4e0a\u9762\u8fd9\u4e9b\u5c31\u662f\u6ed1\u5757\u6761\u7684\u5916\u89c2\uff0c\u63a5\u4e0b\u6765\u770b\u529f\u80fd\u90e8\u5206\u3002\u5927\u81f4\u601d\u8def\u662f\u5728mapslider\u7c7b\u4e2d\u8bbe\u7f6e\u4e00\u4e2a\u516c\u5171\u5c5e\u6027Map\uff0c\u5c31\u662f\u9700\u8981\u64cd\u4f5c\u7684\u5730\u56fe\u4e86\uff0c\u4f46\u8fd9\u4e2a\u5c5e\u6027\u4e0d\u662fESRI.ArcGIS.Map\uff0c\u800c\u662f\u53e6\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7c7b\u3002\u4e3a\u4ec0\u4e48\u8981\u8fd9\u4e48\u505a\uff1f\u56e0\u4e3a\u8fd9\u4e2a\u81ea\u5b9a\u4e49\u7c7b\u9700\u8981\u5b9e\u73b0INotifyPropertyChanged\u63a5\u53e3\uff0c\u5f53\u6211\u4eec\u628a\u81ea\u5df1\u7684Map\u63a7\u4ef6\u4f5c\u4e3amapslider\u7684\u5c5e\u6027\u8d4b\u503c\u7684\u65f6\u5019\uff0c\u8fd9\u4e2aMap\u9700\u8981\u505a\u53e6\u5916\u4e00\u4e9b\u5de5\u4f5c\u3002\u770b\u4ee3\u7801\u5427\uff0c\u4e0d\u592a\u660e\u767d\u7684\u8bdd\u5c31\u8981\u52a0\u5f3a\u5bf9silverlight\u4e2ddata binding\u7684\u5b66\u4e60\u3002\u5728mapslider.xaml.cs\u9875\u9762\u4e2d\u586b\u5165\u4e00\u4e0b\u4ee3\u7801\uff1ausing System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes; using System.ComponentModel; namespace customcontrol{ public partial class mapslider : UserControl { private mymap map = new mymap(); public ESRI.ArcGIS.Map Map { get { return map.Map; } set { map.Map=value; if (map.Map != null) { Map.ExtentChanged += new EventHandler(map_ExtentChanged); Map.SnapToLevels = true; ((ESRI.ArcGIS.ArcGISTiledMapServiceLayer)Map.Layers[0]).Initialized += new &hellip; <a href=\"https:\/\/blog.newnaw.com\/?p=43\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">ArcGIS API for Silverlight\u5f00\u53d1\u5165\u95e8\uff083\uff09\uff1aWidgets<\/span> <span class=\"meta-nav\">&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[8,24],"_links":{"self":[{"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/posts\/43"}],"collection":[{"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=43"}],"version-history":[{"count":0,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/posts\/43\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=43"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=43"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=43"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}