我在使用以代码隐藏编写的绑定转换器以及相应的标记时遇到问题。它一直给我同样的错误:
不实现接口成员'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:(本地对应命名空间 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 接受我的代码是正确的,但必须将转换器移动到它自己的命名空间中。不明白为什么必须这样做..