2013-05-15 5 views
0

내 응용 프로그램을 실행하려고 할 때이 오류가 발생했습니다 구현하지 않습니다'변환기'인터페이스 멤버 System.Windows.Data.IValueConverter.Convert

은 'InsightSplash.theMenuConverter' '인터페이스 멤버 를 구현하지 않습니다 System.Windows.Data.IValueConverter.Convert (object, System.Type, object, 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

문제는 Convert 대신 convertMe이라는 메서드가 지정되었으므로 (따라서 IValueConverter을 성공적으로 구현하지 못합니다). 변경하려면 :

public object Convert(... 
+0

감사 dbaseman,하지만 난 그것을 변경 후에도 난 여전히 같은 오류가 발생했습니다 :(메소드의 서명에 문제가있을 수 있어야합니다 –

+0

가 @HudaAhmed - 당신은 비주얼 스튜디오가있는 경우, 당신은 이것을 확인하실 수 있습니다 'IValueConverter'를 마우스 오른쪽 버튼으로 클릭하면 거기에 스텁 메서드가 삽입되어야합니다. 차이점은 – McGarnagle

+1

@HudaAhmed입니다. "같은 오류"가 실제로 같은 오류이며 다른 오류가 아닌지 확인하십시오. 동일하지만 다른 유형이나 다른 방법에 대해 불만을 토로합니다. 질문에있는 코드가 프로젝트에있는 코드와 일치하는지 확인하십시오.이 대답은 * 당신을 위해 일해야하기 때문에 ... – hvd