데이터 바인딩은 기본적으로 두 속성 (종종 다른 개체)의 두 값을 동기화하여 하나가 변경되면 다른 쪽도 변경되도록 자동화 된 방식입니다. WPF에서 바인딩 데이터 출처 (형태의 통상 데이터 컨텍스트 아니라 ElementName
, Source
또는 RelativeSource
의해 지정 될 수 있음) 소스 및 대상, 설정되어있는 속성을 가지고 있고 Binding
는 어디 XAML로 작성되거나 코드별로 설정됩니다.
Mode
속성은 어떤면이 다른면을 변경 하는지를 설정합니다.
TwoWay
양쪽이 서로를 서로 업데이트합니다.
OneWay
소스는 대상을 업데이트하지만 대상의 변경 사항은 원본에 영향을주지 않습니다.
OneWayToSource
은 반대입니다. 대상은 원본을 업데이트하지만 원본을 변경하면 대상이 수정되지 않습니다.
OneTime
datacontext가 설정되고 더 이상 더 이상 업데이트되지 않으면 값이 한 번만 복사됩니다.
각각의 경우에 사용할 선택은 특정 필요에 매우 특정한 것입니다. 고려해야 할 중요한 사항은 당신이 한 쪽을 바꾸는 것이고, 다른쪽에 그 변화가 전파되도록하는 것입니다.
예를 들어, 코드의 속성에 TextBox
의 Text
바인딩, 자주는 사용자 유형이 데이터에 업데이트 할 때, 그리고 있기 때문에, TwoWay
을 사용할 수 있습니다 경우 당신은 프로그래밍 방식으로 데이터를 변경하면, 당신을 디스플레이가 너무 업데이트되기를 원합니다. 그러나 사용자가 TextBlock
을 바인딩하는 경우 사용자가 거기에 쓸 수 없으며 아무 것도 전파 할 필요가 없기 때문에 OneWay
이면 충분합니다.
고맙습니다.하지만이게 정확히 InotifyPropertyChanged가 무엇인지 이해 했다면요? 내가 틀렸다면 나를 바로 잡으십시오. – nik
정확하지 않습니다. 'INotifyPropertyChanged'는 데이터 바인딩에 관여하지만 직접적으로는 아니며 다른 용도로 사용됩니다. 그것이하는 일은 재산이 변경된 때를 알려줌으로써 다른 것에 반응 할 수있게하는 것입니다. 바인딩은이를 알고 있어야 컨트롤을 업데이트 할 수 있습니다. 소스가 변경되기 때문에 INPC와 TwoWay가 없다고 가정하면 WPF는 절대로 깨닫지 못하거나 인식하지 않을 것입니다. 상호 교환 적으로, 'OneWayToSource'와 INPC가 있다면 WPF는 타겟을 업데이트하지 않기 때문에 그것에 대해서조차 신경 쓰지 않습니다. – Alejandro
고마워. 정리 됐어. – nik