UpdateSourceTrigger.PropertyChanged を使用して、TextBox を整数にバインドします。
1000 を 2000 に変更したい場合を除いて、これは非常にうまく機能しているようです。
私の回避策は、少しフィルタリングした後に UpdateSource() を明示的に呼び出すことですが、それは正しくありません。
問題を解決する正しい方法はありますか?
private void OnTextChanged(object sender, TextChangedEventArgs e)
{
if (IsLoaded)
{
string text = ((TextBox)sender).Text;
if (text.Length <= 1 || !text.StartsWith("0"))
{
((TextBox)sender).GetBindingExpression(TextBox.TextProperty).UpdateSource();
}
}
}
private void OnTestLostFocus(object sender, RoutedEventArgs e)
{
((TextBox)sender).GetBindingExpression(TextBox.TextProperty).UpdateSource();
}