2013-04-05 48 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}"/> 

回答