클래스 속성이 텍스트 상자의 텍스트 속성에 양방향 바인딩 인 경우 텍스트 상자의 텍스트를 변경하면 클래스의 "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}"/>
Boluc에게 감사드립니다. 이것은 매우 도움이됩니다! – xyk