2016-12-25 11 views
0

依存プロパティの名前を知らなくても、コードから2つの依存プロパティの間にバインディングを作成できますか?つまり、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); 
関連する問題