데이터 바인딩 2

     

DataContext는 Bining 속성에 대해서 검색할 객체를 지정한다.

이번장에서는 DataContext에 대해서 좀 더 알아 보겠다.

CS 소스의 DataContext를 멤버 객체로 설정

데이터 바인딩 1 소스의 xaml 파일은 그대로 가고 cs 소스를 수정해보자.

public partial class MainWindow : Window
{
    public string Message { get; set; }
    public TestData Data { get; set; }

     public MainWindow()
    {
        InitializeComponent();

        Data = new TestData();
        this.DataContext = Data;
    }

     private void button1_Click(object sender, RoutedEventArgs e)
     {
         MessageBox.Show("MainWindow.Massage=" + Message + "\nTestData.Message=" + Data.Message);
     }

     public class TestData
     {
         public string Message { get; set; }

         public TestData()
         {
         }
     }
}

this.DataContext = Data;

DatatContext를  TestData의 객체인 Data로 지정하였다.
Textbox와 바인딩 된 Message는 TestData의 Message이다.

MessageBox.Show("MainWindow.Massage=" + Message + "\nTestData.Message=" + Data.Message);

메시지 박스출력도 Data.Message로 수정했다.

 

XAML의 Binding에서 객체와 속성 지정

<Canvas>
    <TextBox Canvas.Left="29" Canvas.Top="28" Height="22" Name="textBox1" Width="125" Text="{Binding Data.Message}"/>
    <Button Canvas.Left="31" Canvas.Top="78" Content="Button" Height="27" Name="button1" Width="120" Click="button1_Click" />
</Canvas>

Text="{ Binding Data.Message }

TextBox의 Text에 Data객체의 Message 속성을 바인딩한다.

public partial class MainWindow : Window
{
    public string Message { get; set; }
    public TestData Data { get; set; }

     public MainWindow()
    {
        InitializeComponent();

        Data = new TestData();
        this.DataContext = this;
    }

     private void button1_Click(object sender, RoutedEventArgs e)
     {
         MessageBox.Show("MainWindow.Massage=" + Message + "\nTestData.Message=" + Data.Message);
     }

     public class TestData
     {
         public string Message { get; set; }

         public TestData()
         {
         }
     }
}

this.DataContext = this;

DataContext는 MainWindow 클래스의 객체를 지정하고 있다.
xaml에서 MainWindow의 멤버 TestData의 객체 Message 속성을 지정하고 있다.
TextBox에 데이터를 입력하면 TestData의 Message도 같이 설정된다.
실행 결과는 위와 같다.

참고)

http://cswpf.seesaa.net/index-5.html