我将Enum
的基础值(int
)作为参数XAML
传递给IValueConverter
。我们的想法是使用Enum
值来迭代列表以检查值是否存在&返回Visibility
enum
。该列表的类型为int
。但是,在将Enum
传递给converter
时,我无法将Enum
转发回int
。
通过“快速观察”查看参数,我无法看到基础值或任何值。
Enum,例如
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 :(得分:2)
您可能必须先将参数强制转换为枚举类型Reporting
:
int val = System.Convert.ToInt32((Reporting)parameter);
bool visibility = OperationList.Exists(list => list.Id == val);