コード ビハインドで記述されたバインディング コンバーターと対応するマークアップを使用すると問題が発生します。それは私に同じエラーを与え続けます:
インターフェイス メンバー 'System.Windows.Data.IValueConverter.Convert(object, System.Type, object, System.Globalization.CultureInfo)' を実装していません
コードに問題がない場合。ページの読み込み時に DataContext が設定されているリストボックスの DataTemplate を設定しようとしています。これが私のアプリケーションの部分的なコードです
コードビハインド:
namespace Financial_Manager
{
public class AmountOnScreenConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return "£" + Math.Round((decimal)value, 2).ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
}
Xaml: (local は名前空間 Financial_Manager に対応)
<Page.Resources>
<local:AmountOnScreenConverter x:Key="amountConvert" />
<DataTemplate x:Key="recordTemplate">
<Grid Name="newElement">
<TextBlock Name="txtAmount" Height="17" Width="70" Text="{Binding Path=Amount, Mode=OneWay, Converter={StaticResource amountConvert}}"/>
</Grid>
</DataTemplate>
</Page.Resources>
私は周りを見回しましたが、このエラーが表示される理由が見つからないようです。コンバーターを名前空間の外に移動すると、このエラーはなくなりますが、マークアップでコンバーターにアクセスできません。
誰か提案はありますか?
更新: Visual Studio で自分のコードを正しいものとして受け入れるようになりましたが、コンバーターを独自の名前空間に移動する必要がありました。なぜこれをしなければならなかったのか理解できません..