ValueAにINotifyPropertyChangedを実装しているため、txtAの値を変更すると、txtBとtxtCが自動的に変更されると思いました。
しかし、それらは UI で更新されませんでした。txtB は常に 100 で、txtC は常に -50 でした。
理由はわかりません。
私のXaml..
<Window x:Class="WpfApplicationReviewDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<TextBox Name="txtA" Text="{Binding ValueA}" />
<TextBox Name="txtB" Text="{Binding ValueB}" />
<TextBox Name="txtC" Text="{Binding ValueC}" />
</StackPanel>
</Window>
私のコードビハインド...
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new Model();
}
}
public class Model : INotifyPropertyChanged
{
private decimal valueA;
public decimal ValueA { get {
return valueA;
}
set
{
valueA = value;
PropertyChanged(this, new PropertyChangedEventArgs("ValueA"));
}
}
private decimal valueB;
public decimal ValueB
{
get
{
valueB = ValueA + 100;
return valueB;
}
set
{
valueB = value;
PropertyChanged(this, new PropertyChangedEventArgs("ValueB"));
}
}
private decimal valueC;
public decimal ValueC
{
get
{
valueC = ValueA - 50;
return valueC;
}
set
{
valueC = value;
PropertyChanged(this, new PropertyChangedEventArgs("ValueC"));
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
ValueA プロパティの set メソッドにコードを追加すると、機能します。
public decimal ValueA { get {
return valueA;
}
set
{
valueA = value;
PropertyChanged(this, new PropertyChangedEventArgs("ValueA"));
PropertyChanged(this, new PropertyChangedEventArgs("ValueB"));
PropertyChanged(this, new PropertyChangedEventArgs("ValueC"));
}
}
しかし、txtBとtxtCについては自動的に更新/更新されるはずだと思いました。お知らせ下さい。