簡體   English   中英

在 ConverterParameter 中使用枚舉

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM