12장. WPF DataContext를 이용한 데이터바인딩 실습

12장. WPF DataContext를 이용한 데이터바인딩 실습

참조

목적

  • WPF DataContext를 이용한 데이터바인딩 실습을 해봅니다.

예제

  • XAML XML에서 데이터바인딩을 위한 소스객체는 Binding의 Source, ElementName 속성을 이용한다.
  • 바인딩 소스 객체를 명시하는 또 다른 방법이 있는데 DataContext를 이용하면 된다.

MainWindow.xaml

<Window x:Class="WPF12_Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPF12_Test"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="400">
    <Grid x:Name="Gird1">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Column="0" Grid.Row="0" Text="Name:"/>
        <TextBlock Grid.Column="0" Grid.Row="1" Text="City:"/>
        <TextBox x:Name="TextBox1" Grid.Column="1" 
                 Grid.Row="0" Text="{Binding Path=Ename}"/>
        <TextBox x:Name="TextBox2" Grid.Column="1"
                 Grid.Row="1" Text="{Binding Path=City}"/>
        <Button Grid.Column="1" Grid.Row="2"
                Name="button1" Click="button1_Click"
                Content="Control To Context"/>
    </Grid>
</Window>

MainWindow.xaml.cs

using System.Windows;

namespace WPF12_Test
{
    /// <summary>
    /// MainWindow.xaml에 대한 상호 작용 논리
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            Emp e = new Emp()
            {
                Ename = "홍길동",
                City = "서울"
            };

            this.DataContext = e;
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Emp emp = this.DataContext as Emp;
            System.Console.WriteLine(emp.Ename);
            System.Console.WriteLine(emp.City);
        }
    }
}

Emp.cs

namespace WPF12_Test
{
    public class Emp
    {
        public string Ename
        {
            get; set;
        }

        public string City
        {
            get; set;
        }
    }
}

실행결과

1

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY