Практическое руководство. Создание привязки в коде
В этом примере показано, как создать и задать Binding в коде.
Пример
FrameworkElement Класс и FrameworkContentElement предоставляют SetBinding
метод. При привязке элемента, наследующего от любого из этих классов, можно вызвать SetBinding метод напрямую.
В следующем примере создается класс с именем, MyData
, который содержит свойство с именем MyDataProperty
.
public class MyData : INotifyPropertyChanged
{
private string myDataProperty;
public MyData() { }
public MyData(DateTime dateTime)
{
myDataProperty = "Last bound time was " + dateTime.ToLongTimeString();
}
public String MyDataProperty
{
get { return myDataProperty; }
set
{
myDataProperty = value;
OnPropertyChanged("MyDataProperty");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string info)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(info));
}
}
}
Приведенный ниже показано, как создать объект binding, чтобы указать источник привязки. В примере используется SetBinding для привязки Text свойство myText
, который является TextBlock определяют, к MyDataProperty
.
// Make a new source.
MyData myDataObject = new MyData(DateTime.Now);
Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
// Bind the new data source to the myText TextBlock control's Text dependency property.
myText.SetBinding(TextBlock.TextProperty, myBinding);
Полный пример кода, см. в разделе только код пример привязки.
Вместо вызова метода SetBinding, можно использовать SetBinding статический метод BindingOperations класса. Следующий пример, вызовы BindingOperations.SetBinding вместо FrameworkElement.SetBinding для привязки myText
для myDataProperty
.
//make a new source
MyData myDataObject = new MyData(DateTime.Now);
Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
BindingOperations.SetBinding(myText, TextBlock.TextProperty, myBinding);