방법: 코드에서 바인딩 만들기
이 예제에서는 코드로 Binding을 만들고 설정하는 방법을 보여 줍니다.
예제
FrameworkElement 클래스와 FrameworkContentElement 클래스는 둘 다 SetBinding 메서드를 노출합니다. 이러한 클래스 중 하나를 상속하는 요소를 바인딩하는 경우에는 SetBinding 메서드를 직접 호출할 수 있습니다.
다음 예제에서는 MyDataProperty 속성을 포함하는 MyData 클래스를 만듭니다.
Public Class MyData
Implements INotifyPropertyChanged
' Events
Public Event PropertyChanged As PropertyChangedEventHandler _
Implements INotifyPropertyChanged.PropertyChanged
' Methods
Public Sub New()
End Sub
Public Sub New(ByVal dateTime As DateTime)
Me.MyDataProperty = ("Last bound time was " & dateTime.ToLongTimeString)
End Sub
Private Sub OnPropertyChanged(ByVal info As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(info))
End Sub
' Properties
Public Property MyDataProperty As String
Get
Return Me._myDataProperty
End Get
Set(ByVal value As String)
Me._myDataProperty = value
Me.OnPropertyChanged("MyDataProperty")
End Set
End Property
' Fields
Private _myDataProperty As String
End Class
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));
}
}
}
다음 예제에서는 바인딩 개체를 만들어 바인딩의 소스를 설정하는 방법을 보여 줍니다. 이 예제에서는SetBinding을 사용하여 TextBlock 컨트롤인 myText의 Text 속성을 MyDataProperty에 바인딩합니다.
Dim data1 As New MyData(DateTime.Now)
Dim binding1 As New Binding("MyDataProperty")
binding1.Source = data1
Me.myText.SetBinding(TextBlock.TextProperty, binding1)
//make a new source
MyData myDataObject = new MyData(DateTime.Now);
Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
myText.SetBinding(TextBlock.TextProperty, myBinding);
샘플의 전체 코드를 보려면 Creating a Binding in Code Sample을 참조하십시오.
SetBinding을 호출하는 대신 BindingOperations 클래스의 SetBinding 정적 메서드를 사용할 수 있습니다. 다음 예제에서는 FrameworkElement.SetBinding 대신 BindingOperations.SetBinding을 호출하여 myText를 myDataProperty에 바인딩합니다.
Dim myDataObject As New MyData(DateTime.Now)
Dim myBinding As New Binding("MyDataProperty")
myBinding.Source = myDataObject
BindingOperations.SetBinding(myText, TextBlock.TextProperty, myBinding)
//make a new source
MyData myDataObject = new MyData(DateTime.Now);
Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
BindingOperations.SetBinding(myText, TextBlock.TextProperty, myBinding);