2016-12-25 5 views
0

Возможно ли создать привязку между двумя свойствами зависимостей, от кода, не зная имена свойств зависимостей? Другими словами, у меня есть 2 экземпляра DependencyProperty и 2 экземпляра DependencyObject, и я хотел бы создать привязку между ними.Связывание 2 Свойства зависимости вместе без имени

Binding newBinding = new Binding(); 
newBinding.Source = SourceDependencyObject; 
newBinding.Path = ???; // Get name from SourceDependencyProperty? 

BindingOperations.SetBinding(TargetDependencyObject, TargetDependencyProperty, newBinding); 
+0

Любые обновления? Помог ли мой ответ решить проблему? –

ответ

1

Если SourceDependencyObject является DependencyObject, кажется, что мы должны быть в состоянии получить название от SourceDependencyProperty и установить на Binding.Path.

Например:

TextBlock SourceDependencyObject = new TextBlock(); 
SourceDependencyObject.Text = "Hello"; 
TextBlock TargetDependencyObject = new TextBlock(); 
Binding myBinding = new Binding(); 
myBinding.Source = SourceDependencyObject; 
myBinding.Path = new PropertyPath("Text"); 
BindingOperations.SetBinding(TargetDependencyObject, TextBlock.TextProperty, myBinding); 
Debug.WriteLine(TargetDependencyObject.Text); 

Если мы не устанавливаем путь, то TargetDependencyProperty будет указывать на SourceDependencyObject.

Так что если SourceDependencyObject является string, int или другим типом. Нам не нужно устанавливать Binding.Path.

Например:

TextBlock SourceDependencyObject = new TextBlock(); 
SourceDependencyObject.Text = "Hello"; 
TextBlock TargetDependencyObject = new TextBlock(); 
Binding myBinding = new Binding(); 
myBinding.Source = SourceDependencyObject.Text; 
//myBinding.Path = new PropertyPath("Text"); 
BindingOperations.SetBinding(TargetDependencyObject, TextBlock.TextProperty, myBinding); 
Debug.WriteLine(TargetDependencyObject.Text); 
Смежные вопросы