UWP - 文本框绑定到可为空的 int 不起作用
UWP - Textbox Binding to nullabel int not working
在我的通用应用程序中,如果我在文本框中输入一个值,则输入的值不会传输到支持对象中。这只发生在可为空的值上,只要我使变量不可为空,它就会按预期工作。
我发现奇怪的是,如果我将 TargetNullValue='' 设置为我的绑定并清除文本框,那么将调用支持对象并将值按预期设置为 null,但如果我随后输入一个新值到文本框中,该值将不会转移到支持对象中。
我的问题和这个很相似,我认为:
唯一不同的是,我没有收到任何错误消息,它只是没有发生任何事情。我什至尝试了转换器解决方法。调用了转换器,但转换器返回的值不会设置到对象中。
我发现很多 post 就像我上面链接的那样,但在所有情况下都会返回某种错误消息。同样,在我的情况下它什么也没发生,就好像没有绑定一样。
这是我的代码:
<Grid.Resources>
<utils:NullableValueConverter x:Key="NullableIntConverter" />
</Grid.Resources>
<TextBox Text="{Binding Level, Mode=TwoWay, Converter={StaticResource NullableIntConverter}, TargetNullValue=''}" PlaceholderText="Level"/>
支持对象:
public class Unit
{
public int? Level { get; set; }
}
转换器:
public class NullableValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return string.IsNullOrEmpty(value.ToString()) ? null : value;
}
}
请尝试在 ConvertBack() 中 return 一个 int 值,如下所示。
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
int data;
if (string.IsNullOrEmpty((string)value) || !int.TryParse((string)value, out data))
{
return null;
}
else
{
return data;
}
}
在我的通用应用程序中,如果我在文本框中输入一个值,则输入的值不会传输到支持对象中。这只发生在可为空的值上,只要我使变量不可为空,它就会按预期工作。
我发现奇怪的是,如果我将 TargetNullValue='' 设置为我的绑定并清除文本框,那么将调用支持对象并将值按预期设置为 null,但如果我随后输入一个新值到文本框中,该值将不会转移到支持对象中。
我的问题和这个很相似,我认为:
唯一不同的是,我没有收到任何错误消息,它只是没有发生任何事情。我什至尝试了转换器解决方法。调用了转换器,但转换器返回的值不会设置到对象中。
我发现很多 post 就像我上面链接的那样,但在所有情况下都会返回某种错误消息。同样,在我的情况下它什么也没发生,就好像没有绑定一样。
这是我的代码:
<Grid.Resources>
<utils:NullableValueConverter x:Key="NullableIntConverter" />
</Grid.Resources>
<TextBox Text="{Binding Level, Mode=TwoWay, Converter={StaticResource NullableIntConverter}, TargetNullValue=''}" PlaceholderText="Level"/>
支持对象:
public class Unit
{
public int? Level { get; set; }
}
转换器:
public class NullableValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return string.IsNullOrEmpty(value.ToString()) ? null : value;
}
}
请尝试在 ConvertBack() 中 return 一个 int 值,如下所示。
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
int data;
if (string.IsNullOrEmpty((string)value) || !int.TryParse((string)value, out data))
{
return null;
}
else
{
return data;
}
}