[英]Using enum in ConverterParameter
我正在構建一個可供許多用戶使用的應用程序。 每個用戶都被分類到下一個身份驗證級別之一:
public enum AuthenticationEnum
{
User,
Technitian,
Administrator,
Developer
}
某些控件(例如按鈕)僅對特定級別的用戶公開。 我有一個保存當前用戶身份驗證級別的屬性:
public AuthenticationEnum CurrentAuthenticationLevel { get; set; }
我想將此屬性綁定到某些控件的 'Visibilty' 屬性並將參數傳遞給 Converter 方法,告訴它什么是能夠看到控件的最低身份驗證級別。 例如:
<Button Visibility="{Binding Path=CurrentAuthenticationLevel, Converter={StaticResource AuthenticationToVisibility}, ConverterParameter="Administrator"}"/>
意味着只有“管理員”和“開發人員”可以看到按鈕。 不幸的是,上面的代碼將"Administrator"
作為字符串傳遞。 當然,我可以在轉換器方法中使用 switch/case 並將字符串轉換為AuthenticationEnum
。 但這很丑陋並且容易出現維護錯誤(每次enum
更改 - 轉換器方法也需要更改)。
有沒有更好的方法將非平凡對象作為參數傳遞?
ArsenMkrt 的回答是正確的,
另一種方法是在ConverterParameter
使用x:Static
語法
<Button ...
Visibility="{Binding Path=CurrentAuthenticationLevel,
Converter={StaticResource AuthenticationToVisibility},
ConverterParameter={x:Static local:AuthenticationEnum.Administrator}}"/>
並在轉換器中
public class AuthenticationToVisibility : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
AuthenticationEnum authenticationEnum = (AuthenticationEnum)parameter;
//...
}
}
用戶
(AuthenticationEnum)Enum.Parse(typeof(AuthenticationEnum),parameter)
將字符串解析為枚舉數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.