So manipulieren Sie die WPF-GUI basierend auf Benutzerrollen

8

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)

    
Thies 19.06.2009, 17:48
quelle

2 Antworten

15

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%     
Sergej Andrejev 19.06.2009, 22:24
quelle
1
%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.

    
Will Eddins 19.06.2009 18:06
quelle

Tags und Links