【发布时间】:2013-03-29 16:32:00
【问题描述】:
我将带有基础值 (int) 的 Enum 作为参数从 XAML 传递到 IValueConverter。这个想法是使用Enum 值对列表进行迭代以检查该值是否存在并返回Visibility enum。该列表的类型为int。但是当将Enum 传递给converter 时,我无法将Enum 转换回int。
使用“快速观察”查看参数,我看不到基础值或任何值。
枚举例如
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 时,是否有任何方法可以保留或检索枚举的基础值。
【问题讨论】:
-
您说您正在查看 value,但您将枚举值作为
ConverterParameter传递。您是否尝试过凝视parameter? -
请正确格式化您的源代码。格式已经完成 - 不仅在您的代码示例中,而且在您的消息文本中 - 由一个 SO 用户完成,但您只是撤消了这些更改,从而使您的问题的可读性大大降低。
-
有没有办法召回这篇文章?我还没有真正格式化问题?这是我的第一篇文章。
-
是的,请参阅您的问题下方,其中显示“已编辑 ...” - 这是一个链接,可将您带到问题的编辑历史记录 :-) 您可以查看完成的每个编辑操作的差异到目前为止。
-
发现了一个较早的相关问题:stackoverflow.com/questions/4942501/…
标签: c# .net wpf enums ivalueconverter