2016-12-25 115 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);