2023-04-13 11:51:03 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using MECF.Framework.UI.Client.ClientBase;
|
2023-05-10 16:21:45 +08:00
|
|
|
|
using MECF.Framework.UI.Client.RecipeEditorLib.RecipeModel.Params;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-05-10 16:21:45 +08:00
|
|
|
|
namespace MECF.Framework.UI.Client.RecipeEditorLib.DGExtension.CustomColumn
|
2023-04-13 11:51:03 +08:00
|
|
|
|
{
|
|
|
|
|
public class EditorDataGridTemplateColumnBase: ExtendedGrid.Microsoft.Windows.Controls.DataGridTemplateColumn
|
|
|
|
|
{
|
|
|
|
|
#region Variables
|
|
|
|
|
|
|
|
|
|
private MenuPermissionEnum _permission;
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
public EditorDataGridTemplateColumnBase()
|
|
|
|
|
{
|
|
|
|
|
IsReadOnly = false;
|
|
|
|
|
IsEnable = true;
|
|
|
|
|
IsEditable = true;
|
|
|
|
|
_permission = MenuPermissionEnum.MP_NONE;
|
|
|
|
|
Visibility = Visibility.Visible;
|
|
|
|
|
IsExpander = false;
|
|
|
|
|
}
|
|
|
|
|
public string ModuleName { get; set; }
|
|
|
|
|
|
|
|
|
|
public string DisplayName { get; set; }
|
|
|
|
|
|
|
|
|
|
public string UnitName { get; set; }
|
|
|
|
|
|
|
|
|
|
public string ControlName { get; set; }
|
|
|
|
|
|
|
|
|
|
public string Description { get; set; }
|
|
|
|
|
|
|
|
|
|
public string StringCellTemplate { get; set; }
|
|
|
|
|
|
|
|
|
|
public string StringCellEditingTemplate { get; set; }
|
|
|
|
|
|
|
|
|
|
public string StringHeaderTemplate { get; set; }
|
|
|
|
|
|
|
|
|
|
public bool IsEnable { get; set; }
|
|
|
|
|
|
|
|
|
|
public bool IsEditable { get; set; }
|
|
|
|
|
|
2023-06-29 16:23:08 +08:00
|
|
|
|
public bool IgnoreGasFlowCalculate { get; set; }
|
|
|
|
|
|
2023-04-13 11:51:03 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 返回当前列是否为列扩展器。
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool IsExpander { get; protected set; }
|
|
|
|
|
|
|
|
|
|
public string Default { get; set; }
|
|
|
|
|
|
|
|
|
|
public bool EnableConfig { get; set; }
|
|
|
|
|
|
|
|
|
|
public bool EnableTolerance { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 设置当前列权限。
|
|
|
|
|
/// </summary>
|
|
|
|
|
public MenuPermissionEnum Permission
|
|
|
|
|
{
|
|
|
|
|
get => _permission;
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_permission = value;
|
|
|
|
|
UpdateVisibility();
|
2023-06-16 15:48:27 +08:00
|
|
|
|
UpdatePermission();
|
2023-04-13 11:51:03 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool IsColumnSelected
|
|
|
|
|
{
|
|
|
|
|
get => (bool)GetValue(IsColumnSelectedProperty);
|
|
|
|
|
set => SetValue(IsColumnSelectedProperty, value);
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The DependencyProperty that represents the IsReadOnly property.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static readonly DependencyProperty IsColumnSelectedProperty =
|
|
|
|
|
DependencyProperty.Register("IsColumnSelected", typeof(bool), typeof(EditorDataGridTemplateColumnBase), new FrameworkPropertyMetadata(false, OnNotifyCellPropertyChanged));
|
|
|
|
|
|
2023-06-16 15:48:27 +08:00
|
|
|
|
public Action<Param> PermissionChangedCallback { get; private set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
|
|
|
|
public Func<Param,bool> Check { get; set; }
|
|
|
|
|
|
|
|
|
|
#region Methods
|
|
|
|
|
|
2023-06-16 11:44:52 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 当前列的权限发生变化时执行的回调函数。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <remarks>
|
|
|
|
|
/// 该回调函数中,设置当前列下所有配方参数的访问权限。
|
|
|
|
|
/// </remarks>
|
2023-06-16 15:48:27 +08:00
|
|
|
|
private void UpdatePermission()
|
2023-04-13 11:51:03 +08:00
|
|
|
|
{
|
|
|
|
|
switch (Permission)
|
|
|
|
|
{
|
|
|
|
|
default:
|
|
|
|
|
case MenuPermissionEnum.MP_NONE:
|
2023-06-16 15:48:27 +08:00
|
|
|
|
PermissionChangedCallback = (p) =>
|
2023-04-13 11:51:03 +08:00
|
|
|
|
{
|
2023-06-16 15:48:27 +08:00
|
|
|
|
p.ColumnPermission = Permission;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
};
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case MenuPermissionEnum.MP_READ:
|
2023-06-16 15:48:27 +08:00
|
|
|
|
PermissionChangedCallback = (p) =>
|
2023-04-13 11:51:03 +08:00
|
|
|
|
{
|
2023-06-16 15:48:27 +08:00
|
|
|
|
p.ColumnPermission = Permission;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
};
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case MenuPermissionEnum.MP_READ_WRITE:
|
|
|
|
|
|
2023-06-16 15:48:27 +08:00
|
|
|
|
PermissionChangedCallback = (p) =>
|
2023-04-13 11:51:03 +08:00
|
|
|
|
{
|
2023-06-16 15:48:27 +08:00
|
|
|
|
p.ColumnPermission = Permission;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
};
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2023-06-16 11:44:52 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据权限更新当前列的可见状态。
|
|
|
|
|
/// </summary>
|
2023-04-13 11:51:03 +08:00
|
|
|
|
public void UpdateVisibility()
|
|
|
|
|
{
|
|
|
|
|
if (!IsExpander)
|
|
|
|
|
{
|
|
|
|
|
Visibility = _permission == MenuPermissionEnum.MP_NONE
|
|
|
|
|
? Visibility.Collapsed
|
|
|
|
|
: Visibility.Visible;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
}
|