Hi,
Ich entwickle eine Oberfläche ( C# MVVM mit CaliburnMicro ), die aktuell permanent wächst und somit viele Daten angezeigt werden.
Die Daten sind verteilt in Listen und Reitern ( TabItem ). Ich möchte nun auf Basis einer einfachen Berechtigung entscheiden, welche Reiter sichtbar sind.
Ich öffne also das Tool und es werden 2 TabItems angezeigt. Anhand des NT-Users möchte ich nun entscheiden, das TabItem2 auszublenden.
Möglich wäre natürlich mit einem Binding und einem ValueConverter zu arbeiten oder auch den Automatismus von CM mit dem IsVisible-Suffix zu verwenden, aber dann wäre ich etwas zu starr, denke ich.
Es geht am Ende um weitere View-Elemente und ich wollte ungern für jedes Element den Code erstellen müssen.
Mir schwebt eine Lösung über die Actions von CM vor. Ich habe bspw. einem TabItem für das Loaded-Event eine Action gegeben:
In der Methode HasRightsFor schaue ich nun nach, ob die Bezeichnung tabVendorActivity in einer Liste enthalten ist und würde dann gerne die Visibility für den Tab in diesem Beispiel setzen:
Das hätte den Vorteil, dass ich die Methode als Action für jedes Element verwenden kann, das mit Berechtigungen belegt ist.
Hab ich in die Richtung irgendeine Chance oder ist das der komplett falsche Weg?
Ich habe auch schon versucht das TabItem selbst zu übergeben, aber dann erhalte ich immer ein Objekt vom Typ ViewModel.
Selbst wenn ich die View erhalten würde, habe ich keinen Bezug, welches Control die Anfrage gesendet hat.
Danke für Tipps und Anregungen
Gruß Arne
Ich entwickle eine Oberfläche ( C# MVVM mit CaliburnMicro ), die aktuell permanent wächst und somit viele Daten angezeigt werden.
Die Daten sind verteilt in Listen und Reitern ( TabItem ). Ich möchte nun auf Basis einer einfachen Berechtigung entscheiden, welche Reiter sichtbar sind.
Ich öffne also das Tool und es werden 2 TabItems angezeigt. Anhand des NT-Users möchte ich nun entscheiden, das TabItem2 auszublenden.
Möglich wäre natürlich mit einem Binding und einem ValueConverter zu arbeiten oder auch den Automatismus von CM mit dem IsVisible-Suffix zu verwenden, aber dann wäre ich etwas zu starr, denke ich.
Es geht am Ende um weitere View-Elemente und ich wollte ungern für jedes Element den Code erstellen müssen.
Mir schwebt eine Lösung über die Actions von CM vor. Ich habe bspw. einem TabItem für das Loaded-Event eine Action gegeben:
Code:
<TabItem Header="Lieferanten Aktivitäten" Name="tabVendorActivity" cal:Message.Attach="[Event Loaded]=[Action HasRightsFor(tabVendorActivity.Name)]">
Code:
public void HasRightsFor( string element_name ) { bool HasRights = UserRightsFor.Contains( element_name ); // setting visibility depending on HasRights ??? }
Hab ich in die Richtung irgendeine Chance oder ist das der komplett falsche Weg?
Ich habe auch schon versucht das TabItem selbst zu übergeben, aber dann erhalte ich immer ein Objekt vom Typ ViewModel.
Selbst wenn ich die View erhalten würde, habe ich keinen Bezug, welches Control die Anfrage gesendet hat.
Danke für Tipps und Anregungen
Gruß Arne
Comment