2013-05-15 7 views
0

Я получил эту ошибку, когда я пытаюсь запустить мое приложение:«Преобразователь» не реализует элемент интерфейса 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)  

ответ

2

Проблема только в том, что ваш метод называется convertMe вместо Convert (следовательно, он не успешно реализует IValueConverter). Изменить на:

public object Convert(... 
+0

спасибо dbaseman, но даже после того, как я изменил его, я все еще получил такую ​​же ошибку :( –

+0

@HudaAhmed должно быть что-то не так с подписью метода - если у вас есть Visual Studio, вы можете проверить это, щелкнув правой кнопкой мыши на 'IValueConverter', он должен вставить туда метод заглушки, и вы увидите разницу. – McGarnagle

+1

@HudaAhmed Пожалуйста, убедитесь, что« та же ошибка »действительно является той же ошибкой, а не другой ошибкой, которая * почти * то же, но жалуется на другой тип или другой метод. Также убедитесь, что код в вашем вопросе соответствует тому, что у вас есть в вашем проекте. Потому что этот ответ * должен * работать на вас. – hvd

 Смежные вопросы

  • Нет связанных вопросов^_^