私は私のウィンドウで、次のLoadedイベントを持っている:上記の初期化プロパティーごとにDataContextが設定されていると、検証規則が実行されないのはなぜですか?
void Window_Loaded(object sender, RoutedEventArgs e) {
this.DataContext = new MyObject() {
MyDateTime = DateTime.Now,
MyNotEmptyString = "Not Empty",
MyNotUpperCaseString = "not upper case",
MyInteger = 20,
MyIntegerInRange = 1,
MyDouble = 4.56
};
}
、私はそれぞれがそれに関連付けられた独自の検証ルール(複数可)を持つ、それに結合するTextBox
を持っています。
this.DataContext
が設定されている場合、私の検証ルールは初めて実行されませんが、フォームが正常に使用されているときにはうまく動作します(TextBox
がフォーカスを失ったときに実行されます)。これの背後にある理由は何でしょうか?私はUpdateSourceTrigger="PropertyChanged"
を設定しようとしましたが、それは役に立たなかった。
編集:ここでは は、プロパティにバインドされTextBox
の例である:
<TextBox Name="MyDoubleField">
<TextBox.Text>
<Binding Path="MyDouble">
<Binding.ValidationRules>
<local:TextIsDouble/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
あなたはIDataErrorInfoの要件を意味するのですか? CSLA検証ルール? – opedog
IDataErrorInfoを使用していません。私が意味するものの例については、編集された質問を参照してください。まだ明らかでない場合はお知らせください。 – Pwninstein