Utilities.cs
上传用户:huazai0421
上传日期:2008-05-30
资源大小:405k
文件大小:3k
源码类别:

SilverLight

开发平台:

C#

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows;
  4. using System.Windows.Controls.Primitives;
  5. using System.Windows.Media;
  6. using ESRI.ArcGIS.Client.Symbols;
  7. namespace ESRI.ArcGIS.Samples
  8. {
  9. public class SimpleRenderer : ESRI.ArcGIS.Client.IRenderer
  10. {
  11. #region IRenderer Members
  12. public ESRI.ArcGIS.Client.Symbols.Symbol GetSymbol(ESRI.ArcGIS.Client.Graphic graphic)
  13. {
  14. if (graphic.Geometry is ESRI.ArcGIS.Client.Geometry.Polygon ||
  15. graphic.Geometry is ESRI.ArcGIS.Client.Geometry.Envelope)
  16. return new SimpleFillSymbol()
  17. {
  18. Fill = new SolidColorBrush(Color.FromArgb(0x33, 0xFF, 0, 0)),
  19. BorderThickness = 2,
  20. BorderBrush = new SolidColorBrush(Color.FromArgb(0xFF, 0xFF, 0, 0))
  21. };
  22. else if (graphic.Geometry is ESRI.ArcGIS.Client.Geometry.Polyline)
  23. return new SimpleLineSymbol()
  24. {
  25. Color = new SolidColorBrush(Color.FromArgb(0xFF, 0xFF, 0, 0)),
  26. Width = 3
  27. };
  28. else return new SimpleMarkerSymbol();
  29. }
  30. #endregion
  31. }
  32. public class Utilities
  33. {
  34. public static string GetToggleGroup(DependencyObject obj)
  35. {
  36. return (string)obj.GetValue(ToggleGroupProperty);
  37. }
  38. public static void SetToggleGroup(DependencyObject obj, string value)
  39. {
  40. obj.SetValue(ToggleGroupProperty, value);
  41. }
  42. // Using a DependencyProperty as the backing store for ToggleGroup.  This enables animation, styling, binding, etc...
  43. public static readonly DependencyProperty ToggleGroupProperty =
  44. DependencyProperty.RegisterAttached("ToggleGroup", typeof(string), typeof(Utilities), new PropertyMetadata(null, OnToggleGroupPropertyChanged));
  45. private static void OnToggleGroupPropertyChanged(DependencyObject dp, DependencyPropertyChangedEventArgs args)
  46. {
  47. if (!(dp is ToggleButton))
  48. throw new ArgumentException("Toggle Group can only be set on ToggleButton");
  49. ToggleButton button = dp as ToggleButton;
  50. string newID = (string)args.NewValue;
  51. string oldID = (string)args.OldValue;
  52. if (oldID != null && groups.ContainsKey(oldID))
  53. {
  54. groups[newID].Remove(button);
  55. button.Checked -= button_Checked;
  56. }
  57. if (newID != null)
  58. {
  59. if (!groups.ContainsKey(newID))
  60. {
  61. groups.Add(newID, new List<ToggleButton>());
  62. }
  63. groups[newID].Add(button);
  64. button.Checked += button_Checked;
  65. }
  66. }
  67. private static void button_Checked(object sender, RoutedEventArgs e)
  68. {
  69. ToggleButton button = sender as ToggleButton;
  70. string ID = GetToggleGroup(button);
  71. if (ID != null && groups.ContainsKey(ID))
  72. {
  73. foreach (ToggleButton b in groups[ID])
  74. {
  75. if(b != button)
  76. b.IsChecked = false;
  77. }
  78. }
  79. }
  80. private static Dictionary<string, List<ToggleButton>> groups = new Dictionary<string,List<ToggleButton>>();
  81. }
  82. }