Я получил эту ошибку, когда я пытаюсь запустить мое приложение:«Преобразователь» не реализует элемент интерфейса System.Windows.Data.IValueConverter.Convert
«InsightSplash.theMenuConverter» не реализует интерфейс члена ' System.Windows.Data.IValueConverter.Convert (объект, System.Type, объект, System.Globalization.CultureInfo)»
Любая идея, что случилось с этим? Насколько я знаю, что мой импорт правилен:
Моих Xaml Интерфейс:
<Window x:Class="InsightSplash.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:InsightSplash"
Title="Window2" Height="300" Width="300" Loaded="Window_Loaded">
<Window.Resources>
<local:theConverter x:Key="theConverter"/>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="IsEnabled" Value="{Binding RelativeSource={RelativeSource Self},
Converter={StaticResource theConverter}}"></Setter>
</Style>
</Window.Resources>
<Grid HorizontalAlignment="Left" VerticalAlignment="Top" >
<Menu Grid.Row="0" Width="100" Height="30" IsMainMenu="True">
<MenuItem x:Name="Menu0" Header="الموارد البشرية" IsEnabled="True" >
<MenuItem x:Name="Menu1" Header="الادارات الرئيسية"></MenuItem>
<MenuItem x:Name="Menu2" Header="الموظفين"></MenuItem>
</MenuItem>
</Menu>
</Grid>
И мой конвертер класс так:
public class theMenuConverter : IValueConverter
{
DataClasses1DataContext dbusers = new DataClasses1DataContext();
public object convertMe(object value, Type targetType, object parameter, CultureInfo culture)
{
MenuItem mi = (MenuItem)value;
string header = mi.Header.ToString();
int userID = AFunctionToGetAUser();
int? permissionID = (from permsion in dbusers.PermissionsTbls
where permsion.PermissionDescription == header
select permsion.PermissionID).SingleOrDefault();
bool? pageActivity = (from active in dbusers.ActivePermissionsTbls
where active.PermissionID == permissionID && active.UserID == userID
select active.PageActive).SingleOrDefault();
if (pageActivity == true && header != null)
{
return true;
}
else
{
return false;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
private int AFunctionToGetAUser()
{
return 1;
}
}
Моей база данных, которая у меня есть
ActivePermissionsTbl ==================== ActivePermID bigint PermissionID int UserID int PageActive bit PermissionsTbl ============== PermissionID int PermissionDescription nvarchar(30)
спасибо dbaseman, но даже после того, как я изменил его, я все еще получил такую же ошибку :( –
@HudaAhmed должно быть что-то не так с подписью метода - если у вас есть Visual Studio, вы можете проверить это, щелкнув правой кнопкой мыши на 'IValueConverter', он должен вставить туда метод заглушки, и вы увидите разницу. – McGarnagle
@HudaAhmed Пожалуйста, убедитесь, что« та же ошибка »действительно является той же ошибкой, а не другой ошибкой, которая * почти * то же, но жалуется на другой тип или другой метод. Также убедитесь, что код в вашем вопросе соответствует тому, что у вас есть в вашем проекте. Потому что этот ответ * должен * работать на вас. – hvd