2012-04-16 7 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"; 
    } 
} 

私がapp.xamlファイルにRequiredFieldConverterリソースを追加していると私はそれを試してみたいと:私は「hello」を入力したときにすることを期待していた

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

textbox2ではtextbox3に "hello *"と表示されますが、動作しません。実際、私は、実行時に次の例外を取得:また

{「 『System.Windows.Data.IValueConverter』を入力するタイプ 『可能System.String』のオブジェクトをキャストすることができません」}

私は私が行うときに、それが動作するため、値変換機能が動作していることを知っている:

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

答えて

12

...それはIValueConverter参照としてRequiredFieldConverter解釈しようとして、あなたがエラーを取得しています。 の場合は、2番目の例のようにコンバータを参照するのにStaticResourceまたはDynamicResourceを使用する必要があります。

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