Привязки устанавливаются ко второму объекту, который вы хотите привязать к первому объекту.При установке привязки для второго объекта значение, которое могло быть установлено для второго объекта, теряется, а значение для первого объекта становится доступным для чтения и записи (если установлено значение TwoWay).
grid2.SetBinding(FrameworkElement.WidthProperty, new Binding("ActualWidth") { Source = grid1 });
если у вас есть grid3, вы можете затем сделать:
grid3.SetBinding(FrameworkElement.WidthProperty, new Binding("ActualWidth") { Source = grid1 });
В этом примере WidthProperty - это статическое свойство только для чтения, определенное в gridE Framework 2, а grid3 наследуется от FrameworkElement, поэтому они могут использовать это свойство.
В вашем коде вам нужно написать что-то вроде этого (отметив BindingMode.OneWay в режиме).
System.Windows.Data.Binding bind = new System.Windows.Data.Binding();
bind.Source = this;
bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
bind.Path = new PropertyPath("Value");
bind.Mode = BindingMode.OneWay;
DepOb.SetBinding(DepObClass.WidthOrSomethingProperty, bind);
Поскольку вы привязываетесь к экземпляру (DepOb), вам нужно определить фактическийсвойство (или использовать унаследованное) в определении класса, например:
public static readonly DependencyProperty WidthOrSomethingProperty = DependencyProperty.Register("WidthOrSomething", typeof(double), typeof(DepObClass), null);
В реализации DepObClass вы должны определить свое свойство следующим образом:
public double WidthOrSomething
{
get { return GetValue(WidthOrSomethingProperty); }
set { SetValue(WidthOrSomethingProperty, value); }
}
Надеюсь, что это поможет.