4

からへのパラメーターとして、Enum基になる値 ( ) を持つを渡しています。アイデアは、値を使用してリストに対して反復処理を行い、値が存在するかどうかを確認して を返すことです。リストのタイプはです。しかし、 を に渡すとき、バックを にキャストできません。「クイック ウォッチ」でパラメーターを覗いてみると、基になる値や値がまったく表示されません。intXAMLIValueConverterEnumVisibility enumintEnumconverterEnumint

列挙型など

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

4

1 に答える 1

2

Reporting最初にパラメーターを列挙型にキャストする必要がある場合があります。

int val = System.Convert.ToInt32((Reporting)parameter);
bool visibility = OperationList.Exists(list => list.Id == val);
于 2013-04-07T16:39:56.647 に答える