2013-04-07 6 views
4

기본 값 (int)을 가진 EnumXAML에서 IValueConverter까지 매개 변수로 전달 중입니다. 값이 & 인 지 확인하기 위해 목록에 대해 반복하기 위해 Enum 값을 사용하여 Visibilityenum을 반환하는 것이 좋습니다. 목록의 유형은 int입니다. 그러나 Enumconverter에 전달하면 Enumint으로 다시 전송할 수 없습니다. 'Quick Watch'로 매개 변수를 들여다 볼 때 기본 값이나 값을 전혀 볼 수 없습니다.enum (int)의 기본 값을 제거하는 IValueConverter

public class Operations 
{ 
    public enum Reporting 
    { 
     ReportAccounts = 101, 
     ReportEngineering = 102, 
     ReportSoftware = 103, 
     ReportPR   = 104, 
     ReportCRM   = 105 
    } 
    public enum Editing 
    { 
     EditUser = 201, 
     EditAccess = 202, 
     EditView = 203 
    } 
} 

XAML 예컨대

Visibility={Binding Converter={StaticResource VisibilityConverter}, 
     ConverterParameter={x:Static Operations:Reporting.ReportAccounts}} 

IValueConverter 예컨대

public object Convert(object value, Type targetType, object parameter, 
         System.Globalization.CultureInfo culture) 
{ 
    bool visibility = OperationList.Exists(list => list.Id == (int)parameter); 
    if (visibility == true) 
    { 
     return Visibility.Visible; 
    } 
    else 
    { 
     return Visibility.Collapsed; 
    } 
} 
나는 유지하거나가 IValueConverter에 전달 될 때 열거의 기본 값을 검색하는 어떤 방법이 있는지 알고 싶습니다

.

+0

당신은 * 값 * 들여다 있습니다 말하지만, 당신은'ConverterParameter'으로 열거 값을 전달합니다. 대신'매개 변수 '를 들여다 보았습니까? –

+0

소스 코드를 올바르게 포맷하십시오. 이 서식은 코드 샘플뿐 아니라 동료 텍스트 사용자도 이미 완료되었습니다.하지만 변경 사항을 취소하면 사용자의 질문을 상당히 쉽게 읽을 수 없게됩니다. –

+0

이 게시물을 회상하는 방법이 있습니까? 나는 그 질문을 실제로 형식화하지 않았는가? 이것은 나의 첫 번째 게시물입니다. – SAm

답변

2

먼저 열거 형 Reporting에 매개 변수를 캐스팅해야 할 수도 있습니다 :

int val = System.Convert.ToInt32((Reporting)parameter); 
bool visibility = OperationList.Exists(list => list.Id == val);