私のビューでは、Silverlight で MVVM を使用しています。
<TextBox Text="{Binding Path=Temperature,Mode=TwoWay}" />
MyViewModel には次のものがあります。
public MyModel Model {get{...}set{...}}//In my code I do have the property changed events for this
public string Temperature
{
get
{
return Model.Temperature.ToString();
}
set
{
double test;
if(double.TryParse(value, out test))
{
Model.Temperature = test;
}
else
{
Model.Temperature = 0D;
}
}
}
void Model_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
switch(e.PropertyName)
{
case "Temperature":
OnPropertyChanged("Temperature");
break;
}
}
MyModel には次のものがあります。
private double _temperature;
public double Temperature
{
get
{
return _temperature;
}
set
{
_temperature = value; OnPropertyChanged("Temperature");
}
}
ユーザーが double に解析されない何かを入力すると、Model.Temperature プロパティが 0 に設定され、TextBox も 0 に変更したいと思います。OnPropertyChanged イベントがそれを処理すると思いました。何が起こっているのですか?