商信互联
本主题描述如何将自定义SVG或光栅图像以及显示标题与枚举值相关联。请参阅“添加和覆盖图像”帮助主题,以获取有关如何添加和覆盖UI图像的信息。
您可以使用ImageNameAttribute设置表示UI中枚举值的图像。将此属性应用于必需的枚举值,并指定要使用的图像:
public enum SampleEnum {
[ImageName("BO_Person")]
First,
[ImageName("BO_Position")]
Second,
[ImageName("BO_Employee")]
Third
}
Public Enum SampleEnum
<ImageName("BO_Person")> _
First
<ImageName("BO_Position")> _
Second
<ImageName("BO_Employee")> _
Third
End Enum
对一个集合中的所有项目使用SVG或光栅图像。当同时使用SVG和光栅图像时,枚举属性编辑器可能无法显示某些图像。在这种情况下,请确保所有条目的图像文件具有相同的格式,并检查应用程序的日志文件以获取枚举属性编辑器记录的其他诊断消息。
使用XafDisplayNameAttribute设置表示用户界面中枚举值的显示标题。将此属性应用于必需的枚举值,并指定要使用的标题:
public enum SampleEnum {
[XafDisplayName("John")]
First,
[XafDisplayName("Sam")]
Second,
[XafDisplayName("Bob")]
Third
}
Public Enum SampleEnum
<XafDisplayName("John")> _
First
<XafDisplayName("Sam")> _
Second
<XafDisplayName("Bob")> _
Third
End Enum
您可以在XAF的主要演示中看到此处演示的代码。
枚举值可以表示“单选操作”的项。以下代码演示了如何使用枚举值填充ChoiceActionBase.Items集合,以及如何为这些项目设置图像:
using DevExpress.ExpressApp.Utils;
//...
public partial class TaskActionsController : ViewController {
public SetPriorityController() {
InitializeComponent();
SetPriorityAction.Items.Clear();
foreach(Priority current in Enum.GetValues(typeof(Priority))) {
// Create an EnumDescriptor to get the localized enumeration value
EnumDescriptor ed = new EnumDescriptor(typeof(Priority));
ChoiceActionItem item = new ChoiceActionItem(ed.GetCaption(current), current);
// Set the image name
item.ImageName = ImageLoader.Instance.GetEnumValueImageName(current);
SetPriorityAction.Items.Add(item);
}
}
}
Imports DevExpress.ExpressApp.Utils
'...
Public Class SelectViewController
Inherits DevExpress.ExpressApp.ViewController
Public Sub New()
MyBase.New()
InitializeComponent()
SetPriorityAction.Items.Clear()
For Each current As Priority In System.Enum.GetValues(GetType(Priority))
' Create an EnumDescriptor to get the localized enumeration value
Dim ed As EnumDescriptor = New EnumDescriptor(GetType(Priority))
Dim item As ChoiceActionItem = _
New ChoiceActionItem(ed.GetCaption(current), current)
' Set the image name
item.ImageName = ImageLoader.Instance.GetEnumValueImageName(current)
SetPriorityAction.Items.Add(item)
Next current
End Sub
End Class
下图显示了Windows Forms应用程序中的SetPriorityAction: