1. Data Context란?
- 데이터 바인딩을 할 때, 하나의 객체를 여러 개로 바인딩을 하려면 Binding ElementName을 반복해서 사용하는
번거로움을 가지고 있습니다.
- 그래서, 위와 같은 문제를 해결하기 위해, 부모 엘리먼트에 Data Context를 줘서 그 부모를 데이터 바인딩을
할 수 있게 해줍니다.
- 아래의 예를 보면 쉽게 알 수 있습니다.
2. Data Context 예제
- 1개의 Stack Panel 안에 다시 DockPanel.Dock를 생성하여 DockPanel을 부모 엘리먼트로 사용
3. 소스 코드
<Window x:Class="WpfApp7.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:WpfApp7"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<StackPanel DataContext="StackPanel Context">
<DockPanel DataContext="DockPanel Context"> // DockPanel 안에 Textbox 3개가 DockPanel의 부모 엘리먼트
<TextBox DockPanel.Dock="Top"
Text="{Binding Mode=OneWay}"/>
<TextBox DockPanel.Dock="Top"
Text="{Binding Mode=OneWay}"/>
<TextBox DockPanel.Dock="Top"
Text="{Binding Path=Length,
Mode=OneWay}"/>
</DockPanel>
</StackPanel>
</Window>
4. 설명
위에서, DockPanel의 DataContext를 지우게 되면, 위의 StackPanel의 DataContext를 부모 엘리먼트로 인식하여 StackPanel의 text를 바인딩하게 된다.
5. 결과
6. 추가적인 예제
XAML 부분에서 Data Context를 사용하지 않고, beindCode 부분에서
아래의 소스 코드 같이 코딩하고, 실행해도 된다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApp7
{
/// <summary>
/// MainWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = "this is window"; // this.DataContext = this; 해도 상관 없음
}
}
}
'Language > C# WPF Programming' 카테고리의 다른 글
C# WPF 프로그래밍 WrapPanel 구현하기 (0) | 2019.05.30 |
---|---|
C# WPF 프로그래밍 데이터 바인딩 예제 (0) | 2019.05.27 |
C# WPF 프로그래밍 데이터 바인딩(Data Binding) 구현하기 (0) | 2019.05.26 |
C# WPF 프로그래밍 데이터베이스(DB) 생성 및 연동하기 (0) | 2019.05.25 |
C# WPF 프로그래밍 계산기(Calculator) 프로그램 만들기 - 연산자 다중 계산 (2) | 2019.05.20 |
C# WPF 프로그래밍 Dependency Property 다루기 (1) | 2019.05.19 |
C# WPF 프로그래밍 Basic Property 다루기 (0) | 2019.05.14 |
C# WPF 프로그래밍 속성(Property) 다루기 (0) | 2019.05.13 |
최근댓글