2016-05-30 5 views
0

У меня есть свойство в моем представлении тип модели decimal?. Значение NULL должно быть допустимым значением для этого свойства, но когда я стираю текст из элемента DecimalUpDown, возникает ошибка проверки и свойство не получает значение NULL (независимо от того, что ранее было).Разрешить NULL в WPF Extended Toolkit DecimalUpDown control

управления объявлен в XAML как:

<xctk:DecimalUpDown ValueChanged="UpDownBase_OnValueChanged" Text="{Binding ServiceSize}" Minimum="0" Grid.Column="4" Grid.Row="2" Margin="5" IsEnabled="{Binding IsEditable}"/> 

Он будет связывать правильно ли я ввести номер enter image description here

Но как только число стирается происходит ошибка проверки, а значение не может быть возвращено в NULL (в этом случае модель по-прежнему имеет значение «5» в качестве значения для «ServiceSize»). enter image description here

Validation.GetHasError() возвращает true для этого элемента управления. Могу ли я полностью удалить Правила проверки?

+0

Вы можете попробовать использовать IValueConverter обрабатывать нулевой вход в-случае, если вы используете привязки данных. –

+0

@ Ephraim Я пробовал это раньше, но я думаю, что я не сделал это правильно, так как получил работу после перезаписи конвертера с нуля. Если вы добавите ответ на некоторый пример кода, я могу его принять – ryan

ответ

0

Вы можете реализовать IValueConverter для обработки пустого ввода.

public class DecimalUpDownValueConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, 
     object parameter, CultureInfo culture) 
    { 
     // handle input on a case-to-case basis 
     if(value == null) 
     { 
      // Do something 
      return 0; 
     } 
     else 
     { 
      return value; 
     } 
    } 

    public object ConvertBack(object value, Type targetType, 
     object parameter, CultureInfo culture) 
    { 
     // Do the conversion from model property to DecimalUpDownValue 
     return value; 
    } 
} 

На ваш взгляд: (Предполагая, что вы добавили DecimalUpDownValueConverter как статический ресурс)

<xctk:DecimalUpDown ValueChanged="UpDownBase_OnValueChanged" Text="{Binding ServiceSize, Converter = { StaticResource DecimalUpDownValueConverter }}" Minimum="0" Grid.Column="4" Grid.Row="2" Margin="5" IsEnabled="{Binding IsEditable}"/> 

 Смежные вопросы

  • Нет связанных вопросов^_^