2013-07-25 8 views
2

몇 가지 예에서 데이터 바인딩을 보았습니다. 그 중 일부를 이해합니다. 알아낼 수없는 것은 mode = twoway 및 mode = oneway를 사용할 때입니다.데이터 바인딩은 어떻게 사용됩니까?

<TextBlock x:Name="Item" Text="{Binding Path=Name, Mode=OneWay}" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" /> 
<TextBox x:Name="Count" Text="{Binding Path=Count, Mode=TwoWay}" Grid.Column="1" TextAlignment="Center" InputScope="Number"/> 

답변

2

양방향 대상 재산 또는 재산 때마다 대상의 속성이나 소스 중 속성 변경 내용을 업데이트

  • MSDN에서.

  • OneWay는 원본 속성이 변경 될 때만 대상 속성을 업데이트합니다.

  • OneTime은 응용 프로그램이 시작되거나 DataContext가 변경 될 때만 대상 속성을 업데이트합니다.

  • OneWayToSource는 대상 속성이 변경되면 원본 속성을 업데이트합니다. 기본값은 대상 속성의 기본 모드 값을 사용하게합니다.

를 사용하여 양방향 당신은 변화가 앞뒤로 소스 및 대상 (뷰 모델과 뷰) 사이의 전파, 당신은 소스를 업데이트하는 대상의 변화를 원하지 않는 경우 한방향을 사용하고자 할 때.

1

데이터 바인딩은 기본적으로 두 속성 (종종 다른 개체)의 두 값을 동기화하여 하나가 변경되면 다른 쪽도 변경되도록 자동화 된 방식입니다. WPF에서 바인딩 데이터 출처 (형태의 통상 데이터 컨텍스트 아니라 ElementName, Source 또는 RelativeSource 의해 지정 될 수 있음) 소스대상, 설정되어있는 속성을 가지고 있고 Binding는 어디 XAML로 작성되거나 코드별로 설정됩니다.

Mode 속성은 어떤면이 다른면을 변경 하는지를 설정합니다.

  • TwoWay 양쪽이 서로를 서로 업데이트합니다.
  • OneWay 소스는 대상을 업데이트하지만 대상의 변경 사항은 원본에 영향을주지 않습니다.
  • OneWayToSource은 반대입니다. 대상은 원본을 업데이트하지만 원본을 변경하면 대상이 수정되지 않습니다.
  • OneTime datacontext가 설정되고 더 이상 더 이상 업데이트되지 않으면 값이 한 번만 복사됩니다.

각각의 경우에 사용할 선택은 특정 필요에 매우 특정한 것입니다. 고려해야 할 중요한 사항은 당신이 한 쪽을 바꾸는 것이고, 다른쪽에 그 변화가 전파되도록하는 것입니다.

예를 들어, 코드의 속성에 TextBoxText 바인딩, 자주는 사용자 유형이 데이터에 업데이트 할 때, 그리고 있기 때문에, TwoWay을 사용할 수 있습니다 경우 당신은 프로그래밍 방식으로 데이터를 변경하면, 당신을 디스플레이가 너무 업데이트되기를 원합니다. 그러나 사용자가 TextBlock을 바인딩하는 경우 사용자가 거기에 쓸 수 없으며 아무 것도 전파 할 필요가 없기 때문에 OneWay이면 충분합니다.

+0

고맙습니다.하지만이게 정확히 InotifyPropertyChanged가 무엇인지 이해 했다면요? 내가 틀렸다면 나를 바로 잡으십시오. – nik

+0

정확하지 않습니다. 'INotifyPropertyChanged'는 데이터 바인딩에 관여하지만 직접적으로는 아니며 다른 용도로 사용됩니다. 그것이하는 일은 재산이 변경된 때를 알려줌으로써 다른 것에 반응 할 수있게하는 것입니다. 바인딩은이를 알고 있어야 컨트롤을 업데이트 할 수 있습니다. 소스가 변경되기 때문에 INPC와 TwoWay가 없다고 가정하면 WPF는 절대로 깨닫지 못하거나 인식하지 않을 것입니다. 상호 교환 적으로, 'OneWayToSource'와 INPC가 있다면 WPF는 타겟을 업데이트하지 않기 때문에 그것에 대해서조차 신경 쓰지 않습니다. – Alejandro

+0

고마워. 정리 됐어. – nik

관련 문제