0

コード ビハインドで記述されたバインディング コンバーターと対応するマークアップを使用すると問題が発生します。それは私に同じエラーを与え続けます:

インターフェイス メンバー '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 で自分のコードを正しいものとして受け入れるようになりましたが、コンバーターを独自の名前空間に移動する必要がありました。なぜこれをしなければならなかったのか理解できません..

4

0 に答える 0