using PdmSwPlugin.Common.Entity.System;
|
using System.Windows;
|
using System.Windows.Controls;
|
|
namespace PdmSwPlugin.Common.Util.Permission
|
{
|
public class PermissionUtil
|
{
|
public static void SetHasPermission(DependencyObject obj, string value)
|
{
|
obj.SetValue(HasPermissionProperty, value);
|
}
|
|
public static readonly DependencyProperty HasPermissionProperty =
|
DependencyProperty.RegisterAttached("HasPermission", typeof(string), typeof(PermissionUtil), new PropertyMetadata(null, (d, e) =>
|
{
|
|
string permission = (string)e.NewValue;
|
FrameworkElement element = d as FrameworkElement;
|
if (element != null)
|
{
|
if (string.IsNullOrEmpty(permission))
|
{
|
SetHasPermission(element, null);
|
return;
|
}
|
|
SetHasPermission(element, permission);
|
if (!element.IsLoaded)
|
{
|
RoutedEventHandler Loaded_Resize = null;
|
Loaded_Resize = (sender, e1) =>
|
{
|
element.Visibility = PdmUser.LoginUser?.permissions?.Contains(permission) == true ? Visibility.Visible : Visibility.Collapsed;
|
};
|
element.Loaded += Loaded_Resize;
|
}
|
else
|
{
|
element.Visibility = PdmUser.LoginUser?.permissions?.Contains(permission) == true ? Visibility.Visible : Visibility.Collapsed;
|
}
|
|
}
|
else if (d is DataGridTemplateColumn col)
|
{
|
col.Visibility = PdmUser.LoginUser?.permissions?.Contains(permission) == true ? Visibility.Visible : Visibility.Collapsed;
|
}
|
else if (d is DataGridTextColumn dg)
|
{
|
dg.Visibility = PdmUser.LoginUser?.permissions?.Contains(permission) == true ?
|
Visibility.Visible : Visibility.Collapsed;
|
}
|
}));
|
}
|
}
|