C# 将XAML可见性属性绑定到Thread.CurrentPrincipal

C# 将XAML可见性属性绑定到Thread.CurrentPrincipal,c#,wpf,security,C#,Wpf,Security,在我的WPF客户端应用程序中,我使用GenericEntity来实现安全性: GenericIdentity MyIdentity = new GenericIdentity("Identity"); String[] MyStringArray = { "Admin", "Editor" }; GenericPrincipal MyPrincipal = new GenericPrincipal(MyIdentity, MyStringArray); 现在我想根据用户角色显示/隐藏WPF对象

在我的WPF客户端应用程序中,我使用
GenericEntity
来实现安全性:

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}"
使转换器中的“value”对象成为“Thread.CurrentPrincipal”字符串,也尝试了:

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

完全跳过转换器。
这是我的第一个C#/.net程序,因此我在这方面的知识并不多,如果能找到解决方案,我将不胜感激。谢谢

在代码隐藏(C#)中,需要将控件的
DataContext
设置为包含
Thread.CurrentPrincipal
的对象。然后在XAML中,使用第二种方法进行操作。

首先,要访问静态属性,需要使用:

这假设你有

xmlns:Threading="clr-namespace:System.Threading;assembly=mscorlib"
在XAML的根元素上

第二,你没有展示你如何设置校长,但是


第三,将角色设置为
Admin
,然后检查
Administrator

,这是一种方法,但肯定不是唯一的方法。
Visibility="{Binding Source={x:Static Threading:Thread.CurrentPrincipal},
    Converter={StaticResource RoleToVisibilityConverter}, ConverterParameter=Admin}"
xmlns:Threading="clr-namespace:System.Threading;assembly=mscorlib"