2013-04-07 3 views
4

Я передаю Enum с базовым значением (int) в качестве параметра от XAML до IValueConverter. Идея состоит в том, чтобы использовать значение Enum для перебора списка, чтобы проверить, существует ли значение &. Visibilityenum. Список имеет тип int. Но при передаче Enum на converter я не могу отдать Enum обратно на int. Вглядываясь в параметр с помощью «Быстрого просмотра», я не вижу основного значения или какого-либо значения вообще.IValueConverter, удаляющий базовое значение enum (int)

Enum, eg.

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

Правильно отформатируйте исходный код. Это форматирование уже было сделано не только в ваших образцах кода, но и в тексте вашего сообщения другим пользователем SO, но вы просто расстегнули эти изменения и тем самым сделали ваш вопрос значительно менее удобочитаемым. –

+0

Есть ли способ вспомнить этот пост? Я действительно не отформатировал вопрос? Это мой первый пост. – SAm

ответ

2

Вы, возможно, придется бросить параметр в перечислимого типа Reporting первый:

int val = System.Convert.ToInt32((Reporting)parameter); 
bool visibility = OperationList.Exists(list => list.Id == val); 
Смежные вопросы