我使用 UpdateSourceTrigger.PropertyChanged 将 TextBox 绑定到整数。
这似乎工作得很好,除非我想将 1000 更改为 2000。删除 1 后,绑定有点太聪明了,将文本截断为一个 0。
我现在的解决方法是在经过一些过滤后显式调用 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();
}