2013-04-05 3 views
0

클래스 속성이 텍스트 상자의 텍스트 속성에 양방향 바인딩 인 경우 텍스트 상자의 텍스트를 변경하면 클래스의 "PropertyChanged"이벤트가 발생 함 해고 야? 그것은 내 경우에는 - 텍스트 상자 내용을 변경할 때 메시지 상자가 절대로 팝업하지 않습니다. 속성이 텍스트 상자의 변경 사항을 변경하면 바인딩이 작동하고 반대의 경우도 마찬가지입니다.Silverlight PropertyChanged 이벤트가 양방향 텍스트 상자 바인딩에서 실행되지 않음

편집 : 이제는 효과가 있지만 텍스트가 포커스를 잃을 때만 나타납니다. 나는이 행동 뒤에 이유가 있어야한다고 생각한다.

코드 :

public class BaselineAreas : INotifyPropertyChanged 
    { 
     public event PropertyChangedEventHandler PropertyChanged; 
     private double _Impervious = 0; 
     public double Impervious 
     { 
      get { return _Impervious; } 
      set 
      { 
       if (value != this._Impervious) 
       { 
        _Impervious = value; 
        NotifyPropertyChanged("Impervious"); 
       } 
      } 
     } 
     private double _Pervious = 0; 
     public double Pervious 
     { 
      get { return _Pervious; } 
      set 
      { 
       if (value != this._Pervious) 
       { 
        _Pervious = value; 
        NotifyPropertyChanged("Pervious"); 
       } 
      } 
     } 
     public void NotifyPropertyChanged(string propertyName) 
     { 
      if (PropertyChanged != null) 
      { 
       PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
      } 
     } 
    } 

    private BaselineAreas baselineAreas = new BaselineAreas(); 

    public MainPage() 
    { 
     InitializeComponent(); 

     baselineAreas.Impervious = 100; 
     baselineAreas.Pervious = 500; 
     textBoxTotalImperviousArea.DataContext = baselineAreas; 
     textBoxTotalPerviousArea.DataContext = baselineAreas; 
     baselineAreas.PropertyChanged += new PropertyChangedEventHandler(baselineAreas_PropertyChanged); 
    } 

    void baselineAreas_PropertyChanged(object sender, PropertyChangedEventArgs e) 
    { 
     MessageBox.Show(baselineAreas.Impervious.ToString()); 
    } 

XAML :

   <TextBox Height="23" HorizontalAlignment="Left" Margin="138,16,0,0" Name="textBoxTotalImperviousArea" VerticalAlignment="Top" Width="62" 
         Text="{Binding Impervious, Mode=TwoWay}"/> 
       <TextBox Height="23" HorizontalAlignment="Right" Margin="0,45,226,0" Name="textBoxTotalPerviousArea" VerticalAlignment="Top" Width="62" 
         Text="{Binding Pervious, Mode=TwoWay}"/> 

답변