2012-03-30 9 views
1

を非表示にします。は、特定のTabControlの中のTabItemない場合は、私が唯一の特定のTabItemsは、ユーザーに応じて利用できるようにしたいが、私はXAMLでタブコントロール、</p> <p>で働いている管理者

Admins = 1がゆえのTabControlへのフルアクセスを持つ必要があり、

admins = 0ゆえにのみ利用可能な特定のタブを持っている必要があります。

ユーザーに応じて特定のタブを非表示にするにはどうすればよいですか?

ありがとうございました。

+0

MVVMアーキテクチャを使用していますか? –

+0

私はWPFでこれをやっている – Ebikeneser

+1

これは、それが唯一の管理者のみのものをやっているユーザーを止めている場合は、承認を処理する非常に安全な方法ではありません... –

答えて

2

あり、これを行うための多くの方法がある、と私はIsAdminフラグが

私の個人的な好みが設定されている静的Userオブジェクトをオフに基づいているDataTriggerですが格納されている場所に依存するあなたが使用するものと仮定

<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でユーザーが最初にログインすると、アプリケーションが起動し、ユーザーがログインするときに設定されてCurrentUserプロパティが含まれて静的クラスだろう。CurrentUserはと呼ばれるブール型プロパティがあります

0

あなたはアプリケーションの負荷後にすべてのタブを非表示にして、ユーザーに応じて、各タブを表示するには、次のようなシンプルな何かができるレベルにアクセス:

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

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

は、値コンバーターを作成します。

[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(); 
    } 
} 

はあなたのXAMLをリソースとしてこれを追加します。

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

は、あなたの財産番目と仮定しますユーザーがIsAdminという名前の管理者であることを示しています

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

私はそうだと思います。

関連する問題

 関連する問題