我刚刚注意到,当非数字事件发生时,例如字母/空格键入或文本清除时,绑定到数字数据的WPF文本框不会触发Property Set
。当我尝试验证文本框是否具有有效数字时,这会成为一个问题。如果用户键入5并按退格键,则数据绑定属性保持为5,而文本框显示为空!我没办法禁用按钮来阻止进一步的进展。无论如何,在绑定到数字数据时是否启用非数字通知?或者,我被迫使用字符串属性/数据转换器?感谢。
答案 0 :(得分:0)
如果您不喜欢默认转换器,则需要创建自己的转换器,如果输入为空或不可解析,则返回有效值。
public class IntBindingConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string input = value as string;
if (String.IsNullOrWhiteSpace(input))
{
return 0;
}
else
{
int outInt;
if (int.TryParse(input, out outInt))
{
return outInt;
}
else
{
return 0;
}
}
}
}
使用示例:
<TextBox>
<TextBox.Text>
<Binding Path="Max">
<Binding.Converter>
<vc:IntBindingConverter/>
</Binding.Converter>
</Binding>
</TextBox.Text>
</TextBox>
这可能看起来有点乱,但通常你实际上只是阻止用户继续进行。