private static void TargetElement_Loaded(object sender, RoutedEventArgs e) { if (sender == null) { return; } if (sender is WidgetBase) { WidgetBase targetElement = sender as WidgetBase; // Get the value of our attached property MapBindingProperties bindingProperties = GetBinding(targetElement); // Find the Map control on the Page if (targetElement.CurrentPage != null) { ESRI.ArcGIS.Client.Map sourceElement = targetElement.CurrentPage.FindName(bindingProperties.SourceElement) as ESRI.ArcGIS.Client.Map; targetElement.MapControl = sourceElement; //string targetPropertyName = bindingProperties.TargetProperty + "Property"; //FieldInfo[] targetFields = targetElement.GetType().GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy); //FieldInfo targetPropertyField = targetFields.First(f => f.Name == targetPropertyName); //DependencyProperty targetDependencyProperty = targetPropertyField.GetValue(null) as DependencyProperty; // Bind the Map to the target property //targetElement.SetValue(targetDependencyProperty, sourceElement); } } else if (sender is TaskbarBase) { TaskbarBase targetElement = sender as TaskbarBase; MapBindingProperties bindingProperties = GetBinding(targetElement); // Find the Map control on the Page if (targetElement.CurrentPage != null) { ESRI.ArcGIS.Client.Map sourceElement = targetElement.CurrentPage.FindName(bindingProperties.SourceElement) as ESRI.ArcGIS.Client.Map; targetElement.MapControl = sourceElement; } } else if (sender is OverviewMapWidget) { OverviewMapWidget targetElement = sender as OverviewMapWidget; MapBindingProperties bindingProperties = GetBinding(targetElement); // Find the Map control on the Page if (targetElement.CurrentPage != null) { ESRI.ArcGIS.Client.Map sourceElement = targetElement.CurrentPage.FindName(bindingProperties.SourceElement) as ESRI.ArcGIS.Client.Map; targetElement.MapControl = sourceElement; } } }
public static void SetBinding(DependencyObject obj, MapBindingProperties value) { obj.SetValue(BindingProperty, value); }