2016-04-10 7 views
0

yılında content özelliğine ediyorum bağlayıcı eklemek nasıl benim UserControl denilen MyLabelSettings içinde.etiket oluşturmak için dinamik ı zamanında bir etiket oluşturabilir ve bunu başka <code>TextBox</code> kontrole <code>Content</code> mülkü bağlanmaya çalışırken WPF

Bu defa ne var: Sistem' için

iyi aşırı yöntem maçı:

Label currCtrl = new Label(); 
MyLabelSettings currCtrlProperties = new MyLabelSettings(); 

// Bindings to properties 
Binding binding = new Binding(); 
binding.Source = currCtrlProperties.textBox_Text.Text; 
binding.Path = new PropertyPath(Label.VisibilityProperty); 
BindingOperations.SetBinding(currCtrl.Content, Label.ContentProperty, binding); 

son satır nasıl çözüleceğini anlamaya vermedi bir hata gösteriyor. Windows.Data.BindingOperations. SetBinding (System.Windows.DependencyObject, System.Windows.DependencyProperty, System.Windows.Data.BindingBase)' bazı geçersiz argümanlar vardır

ben MyLabelSettings aşağıdaki kodu vardır INotifyPropertyChanged uygulanmasını varken TexBox.Text değiştirir

private void TextBox_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    InvokePropertyChanged(new PropertyChangedEventArgs("TextChanged")); 
} 

Bu 2'yi bağlamanın daha iyi bir yolu var mı? Yoksa bu konuda yanlış bir şey mi yapıyorum?

Teşekkürler!

cevap

0

sorun fark daha basittir:

Bu:

binding.Source = currCtrlProperties.textBox_Text.Text; 
binding.Path = new PropertyPath(Label.VisibilityProperty); 
BindingOperations.SetBinding(currCtrl.Content, Label.ContentProperty, binding); 

bu olmalı: Önce

//The source must be an object, NOT a property 
binding.Source = currCtrlProperties; 
//Since the binding source is not a DependencyObject, we using string to find it's property 
binding.Path = new PropertyPath("TextToBind"); 
BindingOperations.SetBinding(currCtrl, Label.ContentProperty, binding); 

, sen aracılığıyla bir nesnenin özelliğine değeri bağlama girişiminde bulundu bir özellik.

Notlar: Şimdi, bir nesnenin (aracılığıyla bir nesnenin özelliğine değer bağlayıcı ediyoruz

  • Bir sınıf örneğine bulunan bir denetimin metni bağlamak için çalışıyorsunuz sadece . yapılan

    MyLabelSettings currCtrlProperties = new MyLabelSettings(); 
    

    Ben bu hattın kapalı bu varsayımı temel: APPE

    currCtrlProperties.textBox_Text.Text; 
    

    Bir tür bir metin denetimi içerecek şekilde ars. Bunun yerine, denetim denetimini değil, yaptığınız sınıfın bir örneğinde bulunan özelliği metnini bağlamak istiyorsunuz.

İlgili konular