2012-03-30 3 views
1

ich mit einem TabControl in XAML arbeite,ausblenden spezifische TabItem in TabControl, wenn nicht einen Admin

aber ich möchte nur bestimmte TabItems je nach dem Benutzer zur Verfügung steht.

Admins = 1 sollte daher vollen Zugriff auf die TabControl haben,

Nicht admins = 0 daher nur bestimmte Registerkarten zur Verfügung haben sollte.

Wie kann ich bestimmte Registerkarten je nach Benutzer ausblenden?

Danke.

+0

Verwenden Sie eine MVVM-Architektur? –

+0

Ich mache das in WPF – Ebikeneser

+1

Das ist nicht eine sehr sichere Möglichkeit, Autorisierung zu behandeln, wenn das die einzige Sache ist, die die Benutzer davon abhält, nur Admin-Dinge zu tun ... –

Antwort

2

Es gibt viele Möglichkeiten, dies zu tun, und ich nehme an, welche Sie verwenden, hängt davon ab, wo der IsAdmin Flagge

gespeichert

Meine persönliche Präferenz ein DataTrigger ist, die ein statisches User Objekt basiert ab, der gesetzt wird, wenn die Benutzer zum ersten Mal in

<Style TargetType="{x:Type TabItem}"> 
    <Setter Property="Visibility" Value="Collapsed" /> 
    <Style.Triggers> 
     <DataTrigger Value="True" Binding="{Binding IsAdmin, Source={x:Static local:Settings.CurrentUser}}"> 
      <Setter Property="Visibility" Value="Visible" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

Settings würde eine statische Klasse, die eine CurrentUser Eigenschaft enthält, das gesetzt wird, wenn die Anwendung startet und sich der Benutzer anmeldet. CurrentUser hat eine boolean Eigenschaftgenannt

0

Sie können alle Registerkarten einmal die Anwendung geladen verstecken und dann einfach etwas tun, wie folgt aus einzelnen Registerkarten zu zeigen, auf die Benutzer je Level-Zugriff:

if (userId == 1) { 
    foreach (var item in tabControl.Items) { 
    item.Visibility = Visibility.Visible; 
} 

} else if (userId == 0) { 
    tabControl.Items[TableControlYouWantVisibile].Visibility = Visibility.Visible; 
} 
1

Wert Konverter erstellen:

[ValueConversion(typeof(bool), typeof(Visibility))] 
public class BooleanToVisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     bool myValue = (bool)value; 

     if (myValue) 
      return Visibility.Visible; 
     else 
      return Visibility.Collapsed; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Fügen Sie diese als Ressource XAML:

<local:BooleanToVisibilityConverter x:Key="visibilityConverter"></local:VisibilityConverter> 

Angenommen, Ihr Eigentum th bei zeigt, wenn ein Benutzer ist Admin mit Namen IsAdmin

<TabItem Visibility={Binding Path=IsAdmin, Converter={StaticResource visibilityConverter}}"> 

Ich denke, das ist alles.

Verwandte Themen