Ich verwende die .NET-Objekte Identity und IPrincipal für die rollenbasierte Sicherheit, und ich bin dabei, die Steuerelemente zu ändern, die basierend auf den Rollen des aktuellen Benutzers angezeigt werden.
Meine Frage ist, was die empfohlene Methode zum Aktivieren / Deaktivieren von Feldern in einem WPF-Fenster ist - das Anzeigen / Verbergen von Feldern abhängig von IIdentity.IsInRole-Typaufrufen.
Kann dies in XAML getan werden, oder muss ich dies in Code abstrahieren, mit dem, was ich denke, ein bisschen unordentlich im Code dahinter ist;
%Vor%(Hinweis: Mein Code überprüft Rollen beim Ausführen von Funktionen. Ich möchte die GUI abhängig von den Rollen ändern, sodass Benutzer schreibgeschützte Elemente nicht sehen / sehen, auf die sie keinen Zugriff haben)
Obwohl die vorherige Antwort funktioniert, sieht es für mich wenig hässlich aus, Sichtbarkeit in logischen Objekten zu erkennen. Ich würde Konverter für das verwenden ...
%Vor%Und dann der Konverter selbst
%Vor%In Ihrem C # -Code:
%Vor% Sie können dasselbe für die Implementierung von etwas für IsReadOnly
tun. Wenn sich die Rolle des Benutzers ändern kann (ich bin mir nicht sicher, wie diese Benutzerrollen funktionieren), können Sie INotifyPropertyChanged
und NotifyPropertyChanged("AdministratorVisibility")
implementieren, andernfalls könnten Sie die BindingMode
in BindingMode.OneTime
ändern und die Implementierung der Benachrichtigungen überspringen.
Das ist wahrscheinlich nicht viel besser als das, was du schon machst, aber es ist wahrscheinlich so gut, wie du es bekommen wirst.