private static void OnSymbolPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            SymbolPresenter obj = (SymbolPresenter)d;

            if (e.OldValue != null)
            {
                (e.OldValue as ESRI.ArcGIS.Client.Symbols.Symbol).PropertyChanged -= obj.symbol_PropertyChanged;
            }
            ESRI.ArcGIS.Client.Symbols.Symbol newValue = (ESRI.ArcGIS.Client.Symbols.Symbol)e.NewValue;
            obj.Template              = newValue.ControlTemplate;
            newValue.PropertyChanged += obj.symbol_PropertyChanged;
        }
 /// <summary>
 /// This method sets the layer to the icon layer and defines the icon symbol
 /// </summary>
 private void IconButton_Click(object sender, RoutedEventArgs e)
 {
     layer = "IconFeatureLayer";
     MyDrawObject.DrawMode = DrawMode.Point;
     drawing = this.MapGrid.Resources["IconSymbol"] as ESRI.ArcGIS.Client.Symbols.Symbol;
     MyDrawObject.IsEnabled = (MyDrawObject.DrawMode != DrawMode.None);
 }
 /// <summary>
 /// This method sets the layer to the EMS layer and defines its draw symbol.
 /// </summary>
 private void EMSButton_Click(object sender, RoutedEventArgs e)
 {
     layer = "EMSFeatureLayer";
     MyDrawObject.DrawMode = DrawMode.Freehand;
     drawing = this.MapGrid.Resources["EMSLineSymbol"] as ESRI.ArcGIS.Client.Symbols.Symbol;
     MyDrawObject.IsEnabled = (MyDrawObject.DrawMode != DrawMode.None);
 }
        private void bindUIToLayer()
        {
            GraphicsLayer graphicsLayer = Layer as GraphicsLayer;

            if (graphicsLayer == null)
            {
                return;
            }

            #region Renderer Takes Precedence
            bindingToLayer = true;
            if (GraphicSymbolsTakePrecedence != null)
            {
                GraphicSymbolsTakePrecedence.IsChecked = !graphicsLayer.RendererTakesPrecedence;
            }
            bindingToLayer = false;
            #endregion

            GeometryType = ESRI.ArcGIS.Mapping.Core.LayerExtensions.GetGeometryType(graphicsLayer);

            ClassBreaksRenderer classBreaksRenderer = graphicsLayer.Renderer as ClassBreaksRenderer;
            if (classBreaksRenderer != null)
            {
                if (RendererOptionsContainerControl != null)
                {
                    ClassBreaksRendererOptionsConfigControl optionsConfigControl = new ClassBreaksRendererOptionsConfigControl()
                    {
                        ClassBreaksRenderer  = classBreaksRenderer,
                        SymbolConfigProvider = SymbolConfigProvider,
                        GeometryType         = GeometryType,
                    };

                    Binding b = new Binding("Foreground")
                    {
                        Source = this
                    };
                    optionsConfigControl.SetBinding(ClassBreaksRendererOptionsConfigControl.ForegroundProperty, b);

                    optionsConfigControl.RendererColorSchemeChanged += new EventHandler <GradientBrushChangedEventArgs>(optionsConfigControl_RendererColorSchemeChanged);
                    optionsConfigControl.RendererClassBreaksChanged += new EventHandler <RendererClassBreaksCountChangedEventArgs>(optionsConfigControl_RendererClassBreaksChanged);
                    RendererOptionsContainerControl.Content          = optionsConfigControl;
                }

                if (RendererOptionsContainerBorder != null)
                {
                    RendererOptionsContainerBorder.Visibility = Visibility.Visible;
                }

                if (CurrentSymbolLabel != null)
                {
                    CurrentSymbolLabel.Visibility = Visibility.Visible;
                }

                createClassBreaksRendererSymbolsConfigControl(classBreaksRenderer);
            }
            else
            {
                UniqueValueRenderer uniqueValueRenderer = graphicsLayer.Renderer as UniqueValueRenderer;
                if (uniqueValueRenderer != null)
                {
                    if (RendererOptionsContainerControl != null)
                    {
                        UniqueValueRendererOptionsConfigControl optionsConfigControl = new UniqueValueRendererOptionsConfigControl()
                        {
                            UniqueValueRenderer  = uniqueValueRenderer,
                            SymbolConfigProvider = SymbolConfigProvider,
                            GeometryType         = GeometryType,
                        };

                        Binding b = new Binding("Foreground")
                        {
                            Source = this
                        };
                        optionsConfigControl.SetBinding(UniqueValueRendererOptionsConfigControl.ForegroundProperty, b);

                        optionsConfigControl.RendererColorSchemeChanged += new EventHandler <GradientBrushChangedEventArgs>(optionsConfigControl_RendererColorSchemeChanged);
                        optionsConfigControl.NewUniqueValueAdded        += new EventHandler <NewUniqueValueInfoEventArgs>(optionsConfigControl_NewUniqueValueCreated);
                        optionsConfigControl.DeleteUniqueValueClicked   += new EventHandler(optionsConfigControl_DeleteUniqueValueClicked);
                        RendererOptionsContainerControl.Content          = optionsConfigControl;
                    }

                    if (RendererSymbolSetContainerControl != null)
                    {
                        UniqueValueRendererSymbolsConfigControl symbolsConfigControl = new UniqueValueRendererSymbolsConfigControl()
                        {
                            UniqueValueRenderer  = uniqueValueRenderer,
                            SymbolConfigProvider = SymbolConfigProvider,
                            GeometryType         = GeometryType,
                        };

                        Binding b = new Binding("Foreground")
                        {
                            Source = this
                        };
                        symbolsConfigControl.SetBinding(UniqueValueRendererSymbolsConfigControl.ForegroundProperty, b);

                        symbolsConfigControl.UniqueValueRendererModified      += new EventHandler <SelectedUniqueValueModificationEventArgs>(symbolsConfigControl_UniqueValueRendererModified);
                        symbolsConfigControl.CurrentUniqueValueChanged        += new EventHandler <CurrentUniqueValueChangedEventArgs>(symbolsConfigControl_CurrentUniqueValueChanged);
                        symbolsConfigControl.DefaultClassBreakBeingConfigured += new EventHandler <DefaultClassBreakBeingConfiguredEventArgs>(symbolsConfigControl_DefaultClassBreakBeingConfigured);
                        RendererSymbolSetContainerControl.Content              = symbolsConfigControl;
                    }

                    if (RendererOptionsContainerBorder != null)
                    {
                        RendererOptionsContainerBorder.Visibility = Visibility.Visible;
                    }

                    if (CurrentSymbolLabel != null)
                    {
                        CurrentSymbolLabel.Visibility = Visibility.Visible;
                    }
                }
                else
                {
                    // No renderer / simple renderer ... clear out the control
                    if (RendererOptionsContainerControl != null)
                    {
                        RendererOptionsContainerControl.Content = null;
                    }

                    if (RendererSymbolSetContainerControl != null)
                    {
                        ESRI.ArcGIS.Client.Symbols.Symbol defaultSymbol       = graphicsLayer.GetDefaultSymbol();
                        DefaultSymbolConfigControl        defaultSymbolConfig = new DefaultSymbolConfigControl()
                        {
                            Symbol = defaultSymbol,
                            SymbolConfigProvider = SymbolConfigProvider,
                            GeometryType         = GeometryType,
                        };

                        Binding b = new Binding("Foreground")
                        {
                            Source = this
                        };
                        defaultSymbolConfig.SetBinding(DefaultSymbolConfigControl.ForegroundProperty, b);

                        defaultSymbolConfig.DefaultSymbolModified += new EventHandler <SymbolSelectedEventArgs>(defaultSymbolConfig_DefaultSymbolModified);
                        RendererSymbolSetContainerControl.Content  = defaultSymbolConfig;
                        if (SymbolConfigControl != null)
                        {
                            SymbolConfigControl.Symbol = defaultSymbol;
                        }
                    }

                    if (CurrentSymbolLabel != null)
                    {
                        CurrentSymbolLabel.Visibility = Visibility.Collapsed;
                    }

                    if (RendererOptionsContainerBorder != null)
                    {
                        RendererOptionsContainerBorder.Visibility = Visibility.Collapsed;
                    }
                }
            }
        }