2011-07-23 96 views
1

在我的WPF客戶端應用程序我用GenericIdentity安全:綁定XAML能見度屬性Thread.CurrentPrincipal中

GenericIdentity MyIdentity = new GenericIdentity("Identity"); 
String[] MyStringArray = { "Admin", "Editor" }; 
GenericPrincipal MyPrincipal = new GenericPrincipal(MyIdentity, MyStringArray); 

現在我想根據用戶角色來顯示/隱藏WPF對象。 Iv'e嘗試了幾種方法,例如:

Visibility="{Binding Source=Thread.CurrentPrincipal, Converter={StaticResource RoleToVisibilityConverter}, ConverterParameter=Administrator}" 

,這使得在轉換器 「Thread.CurrentPrincipal中」 的字符串的 '價值' 的對象,也嘗試:

Visibility="{Binding Path=Thread.CurrentPrincipal, Converter={StaticResource RoleToVisibilityConverter}, ConverterParameter=Administrator}" 

而且

Visibility="{Binding Source=Thread.CurrentPrincipal, Path=CurrentPrincipal, Converter={StaticResource RoleToVisibilityConverter}, ConverterParameter=Administrator}" 

它完全跳過轉換器。 這是我的第一個C#/。net程序,所以我在該領域沒有太多的知識,非常感謝解決方案。謝謝!

回答

2

首先,訪問靜態屬性,您需要使用x:Static markup extension

Visibility="{Binding Source={x:Static Threading:Thread.CurrentPrincipal}, 
    Converter={StaticResource RoleToVisibilityConverter}, ConverterParameter=Admin}" 

這裏假設你的XAML的根元素有

xmlns:Threading="clr-namespace:System.Threading;assembly=mscorlib" 

其次,你不顯示你如何設置委託人,但是you have to do it using AppDomain.SetThreadPrincipal()

第三,您將角色設置爲Admin,但請檢查Administrator

+0

非常感謝你的工作! :) – Noir

0

在代碼隱藏(C#)中,您需要將控件的DataContext設置爲包含Thread.CurrentPrincipal的對象。然後在XAML中,你做第二種方法。

+0

這是一種做法,但肯定不是唯一的方法。 – svick