Единственная причина, о которой я могу подумать, это то, что вы забыли установить DataContext
, так что нет никакого источника для связывания вообще.
this.DataContext = The_View_Model;
Если DataContext
установлен правильно, как вы узнаете, что конвертер не выполняется? Установите точку останова в методе Convert
, достигнута точка останова или нет?
Если вы правильно установили DataContext
и некоторая привязка не работает, посмотрите в окне «Вывод», должна быть некоторая ошибка привязки - в отличие от необработанных исключений, VS просто регистрирует ошибки привязки без вывода сообщений, не завершая работу приложения.
Например, если вы связываете свойство Monitor4
, которое оказывается несуществующим:
System.Windows.Data Ошибка: 40: Ошибка пути BindingExpression: свойство 'Monitor4' не найдено в 'object' '' ConverterWindow '(Name =' ')'. BindingExpression: Path = Monitor4; DataItem = 'ConverterWindow' (Name = ''); целевым элементом является 'Grid' (Name = ''); Целевое свойство - «Ширина» (тип «Двойной»)
Если преобразователь значений работает неправильно
Ошибка System.Windows.Data: 6: преобразователю «DynamicValueConverter» не удалось преобразовать значение «Авто» (тип «Строка»)
В вашем случае вы не можете преобразовать строковое значение Auto
в Double
. Вместо этого вы можете вернуть System.Double.NaN
.
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (string)value == null ? 0.0 : System.Double.NaN;
}