绑定Nullable值时未设置值

时间:2014-01-07 11:53:59

标签: c# windows-runtime winrt-xaml

嗨芽,

我有一个Nullable int属性绑定到TextBox,它在运行期间实现了INotifyPropertyChanged,当我更改TextBox的值并且松散焦点时。物业的Setter没有击中。 : - (

任何想法??!

BTW,Yeah BindingMode设置为TwoWay

2 个答案:

答案 0 :(得分:0)

我可能会考虑将TextBox绑定到字符串属性而不是nullable int,因为那里可能存在某种绑定错误。然后你总是可以这样做:

int outValue;
int? nullableOutValue;
nullableOutValue = int.TryParse(stringValue, out outValue) ? (int?)outValue : null;

然后将您的字符串属性转换为正确的值。您可以在属性的setter中执行此操作,并在需要输入int时为非法值提供错误检查。

答案 1 :(得分:0)

我不确定这是否适用于WinRT,但在WPF中你需要在绑定中指定TargetNullValue

<TextBox Text="{Binding myNullableInt, TargetNullValue={x:Static sys:String.Empty}}"/>

这样,当用户删除文本时,它绑定的属性将更新为null。请查看此SO question以供参考。

更新:

不幸的是,WinRT绑定中没有TargetNullValue。因此,您可以选择使用@ TylerD87的方法,还是创建并使用转换器将空字符串转换为空值,如here所述。