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