VS2010 と Silverlight 5 を使用しています。
クラス (Student) を宣言する単純な Silverlight プロジェクトと、Student プロパティにバインドされたテキスト ボックスを含むビューがあります。
入力された年齢が 100 歳未満または 0 未満の場合、Student クラスは例外をスローします。次に、Age にバインドされたテキスト ボックスで ValidatesOnException = True とマークします。
私はVS2010でアプリを実行しますが、例外は「バインディングエンジン」によってインターセプトされず、ユーザーに対して単純にバブルします。
しかし、VS2012 で実行すると、すべて問題なく動作します。エラーが入力されると、テキストボックスが赤く強調表示され、エラーが表示されます
VS2010が使えるようになりたいです。
同じマシンに VS2010 と VS2012 の両方がインストールされている可能性があります。かなり前からインストールしていますが、他に問題はありませんでした。
これは私の学生クラスです:
public class Student {
private string _name;
public string Name {
get { return _name; }
set { _name = value; }
}
private int _age;
public int Age {
get { return _age; }
set {
if (value > 100 || value < 0) {
throw new Exception("Please enter an age between 0 and 100");
}
_age = value;
}
}
}
これはビューです:
<Grid x:Name="LayoutRoot"
Background="White">
<TextBlock Height="23"
HorizontalAlignment="Left"
Margin="66,48,0,0"
Name="textBlock1"
Text="Name"
VerticalAlignment="Top" />
<TextBox Name="txtName"
Text="{Binding Name, Mode=TwoWay, ValidatesOnExceptions=True}"
Height="23"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Width="185"
Margin="121,44,0,0" />
<TextBlock Height="23"
HorizontalAlignment="Left"
Margin="78,77,0,0"
Name="textBlock2"
Text="Age"
VerticalAlignment="Top" />
<TextBox Name="txtAge"
Text="{Binding Age, Mode=TwoWay, ValidatesOnExceptions=True}"
Height="23"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Width="120"
Margin="121,73,0,0" />
</Grid>
どうなり得るか?