gpt4 book ai didi

c# - IValueConverter 删除 enum(int) 的基础值

转载 作者:行者123 更新时间:2023-11-30 12:30:35 25 4
gpt4 key购买 nike

我正在将具有基础值 (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 时,是否有任何方法可以保留或检索枚举的基础值。

最佳答案

您可能必须先将参数转换为枚举类型Reporting:

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

关于c# - IValueConverter 删除 enum(int) 的基础值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15864767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com