Buduję aplikację, z której może korzystać wielu użytkowników. Każdy użytkownik jest klasyfikowany do jednego z następnych poziomów uwierzytelniania:Używanie enum w ConverterParameter
public enum AuthenticationEnum
{
User,
Technitian,
Administrator,
Developer
}
Niektóre elementy sterujące (takie jak przyciski) są widoczne tylko dla niektórych poziomów użytkowników. Mam właściwość, która utrzymuje poziom uwierzytelniania bieżącego użytkownika:
public AuthenticationEnum CurrentAuthenticationLevel { get; set; }
Chcę powiązać tę właściwość do właściwości „visibilty” niektórych kontroli i przekazać parametr do metody Converter, mówiąc to, co jest najniższy poziom uwierzytelnienia, który jest w stanie zobaczyć kontrolkę. Na przykład:
<Button Visibility="{Binding Path=CurrentAuthenticationLevel, Converter={StaticResource AuthenticationToVisibility}, ConverterParameter="Administrator"}"/>
oznacza, że tylko „Administrator” i „Twórca” można zobaczyć przycisk. Niestety, powyższy kod przekazuje "Administrator" jako ciąg znaków. Oczywiście mogę użyć Switch-Case w metodzie konwertera i przekonwertować ciąg na AuthenticationEnum. Jest to jednak brzydkie i podatne na błędy serwisowe (za każdym razem, gdy zmienia się enum - metoda konwertera powinna się zmienić).
Czy istnieje lepszy sposób przekazywania nie banalnego obiektu jako parametru?
Nie musisz podawać parametru 'KonwerterParametru' jako ciągu znaków –
Ustaw odpowiedź Fredrika jako odpowiedź Proszę. –
Zobacz w przypadku innych formatów i więcej szczegółów - https://stackoverflow.com/questions/359699/passing-an-enue-as-command-parameter-from-xaml – akjoshi