2016-09-02 13 views
0

, 나는이 바인딩 특성과 같이 만든 바인딩 속성에 대해 두 번 호출되고 해고 두번? 바인딩 할 수있는 속성의 정의에 변경된 처리기를 만들면 처리기는 번이됩니다.OnPropertyChanged를이 자 마린 양식에서

public static readonly BindableProperty SelectedItemProperty = BindableProperty.Create("SelectedItem", typeof(MyItem), typeof(MyGrid), default(MyItem), null, SelectedItemChanged); 

코드 숨김에만 문제가 있음을 확인했습니다. XAML에서 속성을 직접 설정하면 속성 변경 이벤트가 번 발생합니다.

답변

2

우리는이 질문에 확실히 답할만한 충분한 정보가 없지만 추측 할 수 있습니다.

SetValue 방법을 보지 않고 나의 단언은 짧은 회로가 없다는 것입니다. "새 값과 이전 값이 같으면 아무 것도하지 마라."

내 두 번째 가정은이 속성에 바인딩되는 컨트롤이 바인딩 된 후 설정된다는 것입니다. SelectedItem이 바인딩되면 목록 유형 컨트롤에서이 문제가 발생할 수 있습니다. 같은

이벤트의 결과로 체인이있을 수 있습니다 뭔가 :

  1. 코드 속성을 설정
  2. 하여 PropertyChanged 이벤트는
  3. 컨트롤이 값을 변경 한 것보고 제어에
  4. 바인딩 세트 값을 해고 , 양방향 바인딩으로 ViewModel의 값을 다시 설정합니다.
  5. 단락이 없으므로 PropertyChanged 이벤트가 다시 발생합니다.
  6. 이 특성 때문에 제어는, 변화를보고하지 않습니다
  7. 바인딩 세트 (이전과 동일한 값으로) 다시 컨트롤의 값은 제대로

내 생각이 있다는 것입니다 단락 당신 경우 당신의 세터를 단락시키는 것이 었습니다. (기존 값에 대해 점검하고 그들이 동일하면 구제 조치를 취함)이 행동은 멈출 것입니다.