Ich habe eine WPF-Desktop-App.Eine bessere Möglichkeit, Benutzerberechtigungen für Elemente festzulegen, die Bindungen verwenden
Ich benutze auch sql lite um Tabellen/Werte zu speichern.
Eine dieser Tabellen ist Benutzerberechtigungsrollen.
Also ... wenn ein Benutzer sich anmeldet, bekommt der Code eine Liste von Rollen, die er benutzen darf.
Ich gehe dann durch jeden Datensatz, um festzulegen, ob die Schaltfläche (dh) für dann aktiviert ist oder nicht.
so in meinem Viewmodel ...
var myUserRoles = DB.CallMyMethodToReturnPermissions(User.Id);
foreach (role in myUserRoles)
{
switch (role.Name)
{
case "CanDelete"
if (role.Enabled)
{
UserPermissions.CanDelete = true;
}
break;
case "CanAdd"
if (role.Enabled)
{
UserPermissions.CanAdd = true;
}
break;
....etc etc etc
}
}
und dann in meiner Ansicht (n) so etwas wie dieses ...
<Button name="CanDelete "IsEnabled="{Binding UserPermissions.CanDelete}" />
<Button name="CanAdd "IsEnabled="{Binding UserPermissions.CanAdd}" />
....etc etc etc
das funktioniert gut All. Aber mit Blick in die Zukunft kann ich zusätzliche Funktionalität sehen und daher Benutzerrollen/Berechtigungen gesetzt werden.
Daher, sollte ich ein anderes Paradigma oder harten Code Änderungen, wenn ich muss? Oder gibt es eine Möglichkeit, dies von meinem DB-Tisch zu fahren?
Ich frage nur diese Frage, weil ich relativ neu zu WPF und Bindings bin, also fragte mich, ob es einige clevere Alternativen gibt?
Ich weiß nicht wirklich WPF tun, sondern aus rein OOP Standpunkt, würde ich eine Basisklasse für Knöpfe (oder sogar Kontrollen) erstellen, das hat eingebaute Logik zu konsumieren welches Sicherheitsschema Sie auch haben und legen Sie einen eigenen Aktivierungsstatus fest. – JuanR
@Juan Hallo, danke für die Antwort. Ja, das war eine der Alternativen, die ich in Erwägung gezogen hätte, aber ich wollte sehen, ob ich es mit wpf Bindings arbeiten lassen könnte. Wie ein bindendes Array zum Beispiel .. Was, wenn ich tat, ich würde Bindungen in t den Code setzen, die ich nicht sicher bin, ist der richtige Weg –