コード例 #1
0
 public void SetBinding(DependencyObject target, DependencyProperty targetProperty, string[] identities)
 {
     if (identities != null)
     {
         Binding binding = BindingOperations.GetBinding(target, targetProperty);
         if (binding != null)
         {
             MultiDataPointBindingObject source = binding.Source as MultiDataPointBindingObject;
             if (source != null)
             {
                 source.Dispose();
             }
         }
         if (identities.Length == 1)
         {
             this.SetBinding(target, targetProperty, identities[0]);
         }
         else if (target is ISetValue)
         {
             BindingOperations.ClearBinding(target, targetProperty);
             MultiDataPointBindingObject obj3 = new MultiDataPointBindingObject(target as ISetValue);
             foreach (string str in identities)
             {
                 DataPointBindingObject bindingObject = this.GetBindingObject(str);
                 if (bindingObject == null)
                 {
                     bindingObject = new DataPointBindingObject(str);
                     this.AddBindingObjcet(str, bindingObject);
                 }
                 obj3.AddBindingObject(bindingObject);
             }
             Binding binding2 = new Binding("Value")
             {
                 Mode   = BindingMode.OneWay,
                 Source = obj3
             };
             BindingOperations.SetBinding(target, targetProperty, binding2);
         }
     }
 }
コード例 #2
0
        internal void ClearBinding()
        {
            Dictionary <string, string> dictionary = new Dictionary <string, string>();

            foreach (BindingTag tag in this.bindingInfo)
            {
                if (!dictionary.ContainsKey(tag.ElementName))
                {
                    FrameworkElement element = this.ui.FindName(tag.ElementName) as FrameworkElement;
                    if (element != null)
                    {
                        if (element is ISetValue)
                        {
                            string    name  = "ValueProperty";
                            FieldInfo field = element.GetType().GetField(name, BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Static);
                            if ((field != null) && (field.FieldType == typeof(DependencyProperty)))
                            {
                                DependencyProperty dp      = field.GetValue(element) as DependencyProperty;
                                Binding            binding = BindingOperations.GetBinding(element, dp);
                                if (binding != null)
                                {
                                    MultiDataPointBindingObject source = binding.Source as MultiDataPointBindingObject;
                                    if (source != null)
                                    {
                                        source.Dispose();
                                    }
                                }
                            }
                        }
                        BindingOperations.ClearAllBindings(element);
                        if (element is IDisposable)
                        {
                            ((IDisposable)element).Dispose();
                        }
                        dictionary.Add(tag.ElementName, tag.ElementName);
                    }
                }
            }
        }