업계에서 바인딩, 소위 "바인딩"에서 음역하고있다. 소스를 결합하는 것은 논리적 데이터 객체 대상은 제어 대상 위 UI 층 . 인터페이스 층에 의해 전달 된 데이터를 바인딩 상기 UI 층에서 도시되는, 데이터 드라이버 UI의 처리를 완료한다.
매우 간단한 열자는 우리의 가장 원시적 인 바인딩에 와서 다음으로 :
<윈도우 X : 종류 = "BindingTest.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 : 로컬 =" CLR-네임 스페이스 : BindingTest " MC : 무시 가능한 ="D " 제목 ="MainWindow를 "높이 ="100 "너비 ="400 "> <StackPanel에> <텍스트 상자 이름 ="MyTextBlock "BorderBrush ="블랙 "여백 ="3 "/ > <버튼 내용 = "나이를 추가"마진 = "3"클릭 = "Button_Click"/> </ StackPanel에> </ 윈도우>
자동 메커니즘을 결합하는 속성 값은 배경을 변경 바인딩 할 때, 자동으로 UI 요소를 통지한다는 것입니다, 등록 할 수있는 능력을 얼마나 얻을하는 사실 만 시간 설정 속성하여 PropertyChanged 이벤트를 트리거 할 필요가있다. 우리는 우리는 단지에서 INotifyPropertyChanged 인터페이스를 구현해야합니다,이 이벤트를 선언 할 필요가 없습니다. 학생들의 수업은 다음과 같습니다이 인터페이스를 구현합니다 :
사용하여 시스템; 사용 System.Collections.Generic 단계; 사용 System.ComponentModel 단계; 사용 을 System.Linq 단계; 사용 System.Text 단계; 사용 System.Threading.Tasks 단계; 네임 스페이스 BindingTest.Models { 공공 클래스 학생 :에서 INotifyPropertyChanged { 공공 이벤트 PropertyChangedEventHandler하여 PropertyChanged; 공공 INT의 _age; 공공 INT의 나이는 { 얻을 { 반환 이 ._age을; } 설정 { 경우 (값! = 0 ) { 이 ._age = 값; 하여 PropertyChanged ? .Invoke ( 이 , 새로운 PropertyChangedEventArgs (nameof (나이))); } } } } }
뒤에있는 코드의 최종 형태 :
네임 스페이스 BindingTest { /// <요약> /// MainWindow.xaml的交互逻辑 /// </ 요약> 공공 부분 클래스 MainWindow를 : 윈도우 { 학생 스튜 덴; 공공 MainWindow를 () { InitializeComponent를 (); 스튜 덴 = 새 학생 (); 바인딩 바인딩 = 새 ) (바인딩; binding.Source = 스튜 덴; binding.Path는 = 새로운 PropertyPath ( " 나이 ") BindingOperations.SetBinding는 ( 이 본 ; .MyTextBlock, TextBox.TextProperty는) 바인딩 // 소스 및 대상 객체의 결합 특성 설정 } 개인 공극 Button_Click ( 개체 SENDER 상기 RoutedEventArgs E) { studen.Age + =를 1. ; // 객체를 변경, 페이지가 텍스트 상자 데이터를 변경합니다 } } }
1 소스 경로를 바인딩
바인딩 소스 1.1 제어
때때로 UI 요소 사이에 어떤 상관 효과를 만들 필요가 컨트롤 간의 바인딩 관계를 이용할 수 있고, 다음의 코드 값과 TextBlock의 슬라이더 (슬라이더)의 문자를 비교 하였다하다. 슬라이더 슬라이드, TextBlock의 값이 변경됩니다 때 발견 할 것이다 다음 코드를 실행합니다.
<윈도우 X : 종류 = " BindingTest.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 : 로컬 = " CLR-네임 스페이스 : BindingTest " MC : 무시 가능한 = "D " 제목 = " MainWindow를 " 높이 = " 100 " 너비 = " 400 " > <StackPanel에> <슬라이더 값 = " 0 " 이름 = " slider1 " 최소 = " 0 " 최대 = " 100 " > </ 슬라이더> <TextBlock의 텍스트 = " {ElementName에 바인딩 = slider1, 클리핑 값} = " 마진 = " 3 " > </ TextBlock이> </ StackPanel에> </ 윈도우>
그것은 모드 데이터 흐름, 일반적으로의 바인딩 설정하여 설정할 수 있습니다 당신의 목표 컨트롤은 텍스트 상자로, 사용자 편집 가능한 양방향입니다 경우 편집 할 수없는 경우 설정되어 있지 않은 경우, 양방향, 편도, OnTime, OneWayToSource 및 기본은 기본입니다 , 그 예로서 TextBlock이 단방향이다.