我在XAML一個TabControl工作,隱藏在TabControl的特定的TabItem如果不是管理員
但我只希望根據用戶特定的TabItems可用。
Admins = 1
因此應該有充分的機會到TabControl,
非admins = 0
因此應該只有特定的選項卡可用。
如何根據用戶隱藏特定選項卡?
謝謝。
我在XAML一個TabControl工作,隱藏在TabControl的特定的TabItem如果不是管理員
但我只希望根據用戶特定的TabItems可用。
Admins = 1
因此應該有充分的機會到TabControl,
非admins = 0
因此應該只有特定的選項卡可用。
如何根據用戶隱藏特定選項卡?
謝謝。
有這樣做的很多方面,我想使用哪種方法取決於其中IsAdmin
標誌存儲
我個人的偏好是一個DataTrigger
這是基於關閉其設置靜態User
對象的時候,在
<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
有一個名爲布爾屬性
可以隱藏,一旦應用程序加載的所有選項卡,然後做一些簡單的像下面顯示的每個選項卡根據用戶的訪問級別:
if (userId == 1) {
foreach (var item in tabControl.Items) {
item.Visibility = Visibility.Visible;
}
} else if (userId == 0) {
tabControl.Items[TableControlYouWantVisibile].Visibility = Visibility.Visible;
}
創建一個值轉換器:
[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}}">
我認爲就是這樣。
您使用的是MVVM架構嗎? – 2012-03-30 10:24:32
我正在做WPF – Ebikeneser 2012-03-30 10:26:36
這不是一個處理授權的非常安全的方式,如果這是阻止用戶執行管理員唯一的事情的唯一因素... – 2012-03-30 10:32:00