C# 未处理WPF异常
嗨,我有一个Usercontrol,它有一个文本框,其中“ValidatesOnExceptions”设置为trueC# 未处理WPF异常,c#,wpf,C#,Wpf,嗨,我有一个Usercontrol,它有一个文本框,其中“ValidatesOnExceptions”设置为true <TextBox.Text> <Binding ElementName="_this" Path="VisibleValue" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay" ValidatesO
<TextBox.Text>
<Binding ElementName="_this"
Path="VisibleValue"
UpdateSourceTrigger="PropertyChanged"
Mode="TwoWay"
ValidatesOnExceptions="True">
</Binding>
</TextBox.Text>
不要被试…抓弄糊涂了。我再次抛出捕获的异常。我不明白的是:当Parse方法抛出异常时,它将得到处理,我的程序将继续运行,文本框将得到一个红色边框
但我进一步抛出的“ArgumentNullException”没有得到处理。有人能给我解释一下吗?有人有没有解决办法,如果这里的值为null,我怎么能得到与Parse方法抛出异常时相同的红色边框
提前谢谢
编辑:如果我抛出FormatException而不是ArgumentNullException,一切都会正常工作。这是为什么?您没有用于抛出新ArgumentNullException的catch块,那么为什么您希望它自己处理?设置一个DataTrigger,一旦值为null,您就设置一个红色边框。@YuvalItzchakov我真的不想这样做,必须有一种方法使用异常这是正常的控制流场景吗?这意味着在某些情况下该值可以为空吗?什么?我不明白
private void SetValue(String visibleValue)
{
Object value = null;
if (!String.IsNullOrEmpty(visibleValue)) {
TypeCode typeCode = Type.GetTypeCode(Type);
try {
switch (typeCode) {
case TypeCode.Byte: {
Byte outValue = Byte.Parse(visibleValue, CultureInfo.InvariantCulture);
value = outValue;
break;
}
case TypeCode.Decimal: {
Decimal outValue = Decimal.Parse(visibleValue, CultureInfo.InvariantCulture);
value = outValue;
break;
}
}
}
catch (Exception ex) {
if (value == null) {
HasValidValue = false;
}
else {
HasValidValue = true;
}
throw ex;
}
}
Value = value;
if (Value == null) {
HasValidValue = false;
throw new ArgumentNullException("Input text was null.");
}
else {
HasValidValue = true;
}