1

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>

どうなり得るか?

4

0 に答える 0