WPF Binding – значение по умолчанию для пустой строки

Существует ли стандартный способ установки значения по умолчанию или возврата для привязки WPF, если связанная строка пуста?

 

Функция FallbackValue похоже, срабатывает, когда Name имеет значение NULL, но не тогда, когда она установлена ​​в String.Empty .

У меня создалось впечатление, что FallbackValue предоставляет значение, когда привязка не выполняется, а TargetNullValue предоставляет значение, когда связанное значение равно null.

Чтобы сделать то, что вам нужно, вам понадобится конвертер (возможно, с параметром), чтобы преобразовать пустую строку в целевое значение или поместить логику в вашу модель представления.

Я бы, вероятно, пошел с конвертером что-то вроде этого (не тестировалось).

 public class EmptyStringConverter : MarkupExtension, IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return string.IsNullOrEmpty(value as string) ? parameter : value; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } 

DataTrigger – это способ, которым я это делаю:

      

Вы должны создать для этого конвертер, который реализует IValueConverter

 public class StringEmptyConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return string.IsNullOrEmpty((string)value) ? parameter : value; } public object ConvertBack( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotSupportedException(); } } 

Затем в xaml вы просто предоставите конвертер привязке, ( xxx просто представляет ваше Window / UserControl / Style … где привязка)

     

Вы можете использовать конвертер и выполнять соответствующую проверку на нем.

 Binding="{Binding Path=Name, Converter={StaticResource nameToOtherNameConverter}}" 

и в конвертере

 public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (!string.IsNullOrEmpty(value.ToString())) { /*do something and return your new value*/ } 
  • WinForms DataGridView - привязка к объекту со свойством списка (переменное число столбцов)
  • Как связать список с dataGridView?
  • Как связать перечисление с элементом управления combobox в WPF?
  • Как связать команду в WPF с обработчиком события двойного щелчка элемента управления?
  • Разница между {Binding PropertyName} и {Binding Path = PropertyName}
  • Как вы привязываете CollectionContainer к коллекции в модели представления?
  • Как повысить свойства Измененные события в зависимости от свойства?
  • Ввод текста заголовка WPF datagrid
  • Связывание в текстовом столбце таблицы данных WPF
  • Список привязок к DataGridView в WinForm
  • Установить значение null в привязке WPF
  • Interesting Posts

    Как разрешить ElementNotInteractableException в Selenium webdriver?

    Ошибка «Устройство ввода не является TTY»

    В функциональном стиле Java8, как я могу сопоставить значения с уже существующей парой значений ключа

    Удалите повторяющиеся значения из массива JS

    Как использовать перехватчик для добавления заголовков в «Дооснащение 2.0»

    Поддержка Android v23.1.0 прерывает обновление NavigationView get / find header

    Пролог: первое дублирующее значение

    Изменить расширяемый индикатор в ExpandableListView

    Mockito: как проверить метод был вызван на объект, созданный в рамках метода?

    размещение новых и удаление

    Как отключить расширения Chrome, не отключая их через несколько синхронизированных устройств

    Необходимо обрабатывать неперехваченное исключение и отправлять файл журнала

    Могу ли я генерировать случайное число внутри пиксельного шейдера?

    Android – Периодическая справочная служба – Советы

    Как точно встраиваемые свойства работают в WPF?

    Давайте будем гением компьютера.