2011-09-23 29 views
60

Kodda bir ciltleme ayarlamam gerekiyor.Kodda nasıl ciltleme yapılır?

Doğru şekilde göremiyorum.

Bu

i denedim budur:

XAML:

<TextBox Name="txtText"></TextBox> 

Kod arkasında:

Binding myBinding = new Binding("SomeString"); 
myBinding.Source = ViewModel.SomeString; 
myBinding.Mode = BindingMode.TwoWay; 
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; 
BindingOperations.SetBinding(txtText, TextBox.TextProperty, myBinding); 

ViewModel: Özellik

public string SomeString 
    { 
     get 
     { 
      return someString; 
     } 
     set 
     { 
      someString= value; 
      OnPropertyChanged("SomeString"); 
     } 
    } 

güncellenmemesi durumunda i ayarla.

Neyi yanlış yapıyorum?

cevap

127

bu deneyin:

Binding myBinding = new Binding(); 
myBinding.Source = ViewModel; 
myBinding.Path = new PropertyPath("SomeString"); 
myBinding.Mode = BindingMode.TwoWay; 
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; 
BindingOperations.SetBinding(txtText, TextBox.TextProperty, myBinding); 

Eğer path (eğer yapıcı yapmak gibi), kaynak sadece ViewModel olmalıdır .SomeString kısım yolundan değerlendirilir belirtirseniz.

+7

Ayrıca son satırın yerine txtText.SetBinding (TextBox.TextProperty, myBinding) de kullanabilir sadece yazarak azaltmak için :) –

+1

@ManishDubey faydası Statik yöntem, ilk parametrenin bir Bağımlılık Nesnesi olarak tanımlanmasıdır, bu nedenle FrameworkElement veya FrameworkContentElement (Freezables gibi) türetmeyen nesneler üzerinde veri bağlama sağlar. – FreddyFlares

8

nesne ViewModel kaynağı değiştirmek gerekir:

myBinding.Source = viewModelObject;