2012-04-16 6 views
1

Я пытаюсь научиться использовать IValueConverter. У меня есть следующий конвертер:Невозможно сделать работу преобразователя

[ValueConversion(typeof(string), typeof(string))] 
public class RequiredFieldConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (value == null) 
      return ""; 

     return value.ToString() + "*"; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (value == null) 
      return ""; 
     var str = value.ToString(); 
     return str+"Convert Back testing"; 
    } 
} 

Я добавил RequiredFieldConverter ресурс в моем файле app.xaml, и я хочу попробовать, как:

<TextBox Name="textBox2" Width="120" /> 
<TextBox Text="{Binding ElementName=textBox2, Path=Text, Converter=RequiredFieldConverter}" Name="textBox3" Width="120" /> 

Я надеялся, что, когда я типа «привет» в textbox2 он показывает «hello *» в текстовом поле3, но он не работает. На самом деле я получаю следующее исключение во время выполнения:

{ «Невозможно привести объект типа„System.String“к типу„System.Windows.Data.IValueConverter“»}

также Я знаю, что функция преобразователя значения работает, потому что это работает, когда я делаю:

Content="{Binding Source={StaticResource Cliente}, Converter={StaticResource RequiredFieldConverter}}" 

ответ

12

... Вы получаете сообщение об ошибке, как он пытается интерпретировать RequiredFieldConverter как ссылки на IValueConverter. Вам необходимо использовать StaticResource или DynamicResource для ссылки на конвертер, как вы это делали в своем втором примере.

<TextBox Text="{Binding ElementName=textBox2, Path=Text, Converter={StaticResouce RequiredFieldConverter}}" Name="textBox3" Width="120" /> 
Смежные вопросы