평신도의 언어 WPF에서 (바인딩 1 부)

업계에서 바인딩, 소위 "바인딩"에서 음역하고있다. 소스를 결합하는 것은 논리적 데이터 객체 대상은 제어 대상 위 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이 단방향이다.

 

 

 

추천

출처www.cnblogs.com/qwqwQAQ/p/11468958.html