我将TextBox.Text绑定到int
属性:
<TextBox Text="{Binding Lines, UpdateSourceTrigger=PropertyChanged}" />
private int _lines = 10;
public int Lines
{
get { return _lines; }
set { _lines = value; }
}
使用这个简单的代码,所有按预期工作,甚至还有TextBox的验证。但是,输出日志中会抛出异常System.FormatException
。我的问题是:
是否有优雅的方法摆脱异常而不重新实现几乎一切我自己?
我所说的一切都是验证器,转换器等等,只是调用Int32.TryParse
代替Int32.Parse
而没有做任何事情的代码。不是由wpf抛出和处理的异常将是一个大问题,但完整日志使得查找实际问题变得更加困难。
答案 0 :(得分:1)
问题并不是那么清楚,但我认为你指的是如果用户输入无效文本(即非数字,非整数数据)时发生的异常。
AFAIK,WPF不包含限制用户输入的内置控件。所以你的选择是:
System.Windows.Forms.MaskedTextBox
控件,即使用WindowsFormsHost。TextBox
控件中使用自定义验证来处理输入,并避免让WPF尝试解析无效文本失败。