2011-09-01 2 views
1

이상한 BindingMode = 양방향 동작

public int SelectedPage 
    { 
     get { return (int)GetValue(SelectedPageeProperty); } 
     set 
     { 
      SetValue(SelectedPageeProperty, value); 
      if (NavigationCommands.Refresh.CanExecute(null, this)) 
       NavigationCommands.Refresh.Execute(null, this); 
     } 
    } 

    // Using a DependencyProperty as the backing store for SelectedPage. This enables animation, styling, binding, etc... 
    public static readonly DependencyProperty SelectedPageeProperty = 
     DependencyProperty.Register("SelectedPagee", typeof(int), typeof(DataBaseSettings), new UIPropertyMetadata(0)); 

WPF이 코드를 작업. 하지만 만약 내가 slighty 2 ee와 함께 SelectedPagee에 dp의 이름을 바꿉니다. 아무도이 현상을 설명 할 수있는 아이디어가 있습니까?

+1

사이드 노트 : 종속성 속성의 설정자에 논리를 구현하면 안됩니다. 이는 호출 할 수 없기 때문에 가능합니다. 오히려 OnPropertyChanged를 재정의하고 거기에서 논리를 수행하십시오. – UrbanEsc

답변

5

이 같은 속성이 그것을 발견하고 그렇지 않으면 완전히 무시됩니다 CLR-재산의 세터를 사용하지 않습니다 바인딩의 이름을 변경하는 경우 (즉 당신이 어떤 코드가 안되는 이유입니다 같은 당신이) 할 수 있으며, 일부 새로 고침 로직 (래퍼에 존재하는 아마 바인딩 그것이 "작품"당신이 생각하고 함께 할 수있다 뭔가를 새로 않음)가 안 언급 한 바와 같이.

당신이 재산에서 수행 추가 로직이 필요하면

필드의 메타 데이터 등록에 DependencyPropertyChanged 콜백을 추가 변경.

... new UIPropertyMetadata(0, SelectedPageChanged); 

private static void SelectedPageChanged(object sender, DependencyPropertyChangedEventArgs e) 
{ 
    var @this = (DataBaseSettings)sender; 
    if (NavigationCommands.Refresh.CanExecute(null, @this)) 
     NavigationCommands.Refresh.Execute(null, @this); 
} 
+0

고마워! selectedpagechanged 이벤트의 유일한 단점은 그것이 정적 점입니다 : raphi011 @/ – raphi011

+0

: 완료 : 그 어떤 단점입니다, 보낸 사람이 개체를 것, 내가 편집 코드 ...를 해결할 수 있습니다. –

+0

위대한! 몰랐어, 덕분에 다시 raphi011 @ – raphi011