programing

ConverterParameter에서 열거형 사용

telecom 2023. 5. 25. 21:33
반응형

ConverterParameter에서 열거형 사용

나는 많은 사용자들이 사용할 수 있는 애플리케이션을 만들고 있습니다.각 사용자는 다음 인증 수준 중 하나로 분류됩니다.

public enum AuthenticationEnum
{
    User,
    Technitian,     
    Administrator,
    Developer
}

일부 컨트롤(예: 단추)은 특정 수준의 사용자에게만 노출됩니다.현재 사용자의 인증 수준을 보유하는 속성이 있습니다.

public AuthenticationEnum CurrentAuthenticationLevel { get; set; }

이 속성을 일부 컨트롤의 'Visibily' 속성에 바인딩하고 Converter 메서드에 매개 변수를 전달하여 컨트롤을 볼 수 있는 최저 인증 수준을 알려주려고 합니다.예:

<Button Visibility="{Binding Path=CurrentAuthenticationLevel, Converter={StaticResource AuthenticationToVisibility}, ConverterParameter="Administrator"}"/>

즉, 'Administrator'와 'Developer'만 버튼을 볼 수 있습니다.불행하게도 위의 코드는 통과합니다."Administrator"끈으로물론 변환기 방식의 스위치/케이스를 사용하여 문자열을 변환할 수 있습니다.AuthenticationEnum그러나 이는 보기 흉하고 유지보수 오류가 발생하기 쉽습니다(매번).enum변경 - 변환기 방법도 변경해야 합니다.)

사소한 개체를 매개 변수로 전달하는 더 좋은 방법이 있습니까?

ArsenMkrt의 대답은 정확합니다.

이를 수행하는 또 다른 방법은 다음과 같습니다.x:Static의 구문ConverterParameter

<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)

문자열을 열거자로 구문 분석하다

언급URL : https://stackoverflow.com/questions/4942501/using-enum-in-converterparameter

반응형