В моем универсальном приложении, если я ввожу значение в текстовое поле, введенное значение не передается в объект поддержки. это происходит только со значениями, допускающими значение NULL, как только я делаю переменную не допускающей значения NULL, она работает должным образом.
Что мне показалось странным, так это то, что если я установил TargetNullValue = '' в свою привязку и очистил текстовое поле, то вызывается объект поддержки и значение устанавливается равным null, как ожидалось, но если я затем ввожу новое значение в текстовое поле, это значение не будет перенесен в объект поддержки.
Моя проблема очень похожа на эту, я думаю: UWP - привязать TextBox.Text к Nullable ‹Int›
Единственная разница в том, что я не получаю никаких сообщений об ошибках, просто ничего не происходит. Я даже пробовал обходной путь конвертера. преобразователь вызывается, но значение, возвращаемое преобразователем, не устанавливается в объект.
Я нашел много сообщений, подобных тому, что я связал выше, но во всех случаях возвращались сообщения об ошибках. опять же, в моем случае просто ничего не происходит, как будто нет привязки.
Это мой код:
<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;
}
}