{Binding} имеет FallbackValue, кстати.
Ваш вопрос, меня это смущает. Я бы предположил, что ваш PVM имеет коллекцию PV как публичную собственность, которая связана с пользовательским интерфейсом. Кроме того, я думаю, что вы смешиваете термины. Его Model-View-ViewModel, где ViewModel является DataContext для View, а модель предоставляется ViewModel через открытое свойство. Похоже, если вы привязываете окно к коллекции ViewModels, они на самом деле являются моделями. Это может показаться педантичным, но правильные условия помогут вам исследовать и задавать вопросы.
Другим решением было бы добавить конвертер в вашу привязку в сочетании с FallbackValue (мне пришлось это сделать, IIRC). Этот конвертер будет IValueConverter, который возвращает «DependencyProperty.UnsetValue», если строка пуста или пуста. Я думаю, что иногда это работает, потому что TextBox установит привязанное свойство к пустой строке, а не к нулю, если TB пуст. Вот небольшой пример, чтобы разжечь ваш свисток (работа не гарантируется; вам нужно отладить и настроить его):
public class ThisMightWorkConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
var temp = value as string;
if(string.IsNullOrWhiteSpace(temp))
return System.Windows.DependencyProperty.UnsetValue;
return temp;
}
public object ConvertBack(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
return value; // you might need to change this
}
}