{"id":48521,"date":"2025-07-30T12:26:57","date_gmt":"2025-07-30T04:26:57","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/48521.html"},"modified":"2025-07-30T12:26:57","modified_gmt":"2025-07-30T04:26:57","slug":"%e5%ad%a6%e4%b9%a0017-01-declare-conditional-appearance-rules-in-code%ef%bc%88%e5%9c%a8%e4%bb%a3%e7%a0%81%e4%b8%ad%e5%a3%b0%e6%98%8e%e6%9d%a1%e4%bb%b6%e6%98%be%e7%a4%ba%e8%a7%84%e5%88%99%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/48521.html","title":{"rendered":"\u5b66\u4e60017-01 Declare Conditional Appearance Rules in Code\uff08\u5728\u4ee3\u7801\u4e2d\u58f0\u660e\u6761\u4ef6\u663e\u793a\u89c4\u5219\uff09"},"content":{"rendered":"<h2>Declare Conditional Appearance Rules in Code&#xff08;\u5728\u4ee3\u7801\u4e2d\u58f0\u660e\u6761\u4ef6\u663e\u793a\u89c4\u5219&#xff09;<\/h2>\n<p>The Conditional Appearance module allows you to change the appearance and visibility of different UI elements, as well as make them disabled\/enabled. These elements include properties in List Views, built-in Property Editors and Static Text in Detail Views. In addition, you can make Actions visible\/invisible or enabled\/disabled. The required appearance can be applied under the specified conditions. To apply a particular appearance to the target UI element, define a rule in code or in the Application Model. In this topic, you will learn how to define an appearance rule in code. To learn the general information on the Conditional Appearance module and appearance rules, refer to the Conditional Appearance Module Overview topic. To learn how to define appearance rules in the Application Model, refer to the Declare Conditional Appearance Rules in the Application Model topic.<br \/>\n\u6761\u4ef6\u5916\u89c2\u6a21\u5757\u5141\u8bb8\u60a8\u66f4\u6539\u4e0d\u540c\u7528\u6237\u754c\u9762\u5143\u7d20\u7684\u5916\u89c2\u548c\u53ef\u89c1\u6027&#xff0c;\u4ee5\u53ca\u4f7f\u5176\u7981\u7528\/\u542f\u7528\u3002\u8fd9\u4e9b\u5143\u7d20\u5305\u62ec\u5217\u8868\u89c6\u56fe\u4e2d\u7684\u5c5e\u6027\u3001\u5185\u7f6e\u5c5e\u6027\u7f16\u8f91\u5668\u548c\u8be6\u7ec6\u89c6\u56fe\u4e2d\u7684\u9759\u6001\u6587\u672c\u3002\u6b64\u5916&#xff0c;\u60a8\u53ef\u4ee5\u4f7f\u64cd\u4f5c\u53ef\u89c1\/\u4e0d\u53ef\u89c1\u6216\u542f\u7528\/\u7981\u7528\u3002\u6240\u9700\u7684\u5916\u89c2\u53ef\u4ee5\u5728\u6307\u5b9a\u6761\u4ef6\u4e0b\u5e94\u7528\u3002\u8981\u5c06\u7279\u5b9a\u5916\u89c2\u5e94\u7528\u4e8e\u76ee\u6807\u7528\u6237\u754c\u9762\u5143\u7d20&#xff0c;\u8bf7\u5728\u4ee3\u7801\u4e2d\u6216\u5e94\u7528\u7a0b\u5e8f\u6a21\u578b\u4e2d\u5b9a\u4e49\u89c4\u5219\u3002\u5728\u672c\u4e3b\u9898\u4e2d&#xff0c;\u60a8\u5c06\u4e86\u89e3\u5982\u4f55\u5728\u4ee3\u7801\u4e2d\u5b9a\u4e49\u5916\u89c2\u89c4\u5219\u3002\u8981\u4e86\u89e3\u6709\u5173\u6761\u4ef6\u5916\u89c2\u6a21\u5757\u548c\u5916\u89c2\u89c4\u5219\u7684\u5e38\u89c4\u4fe1\u606f&#xff0c;\u8bf7\u53c2\u9605\u201c\u6761\u4ef6\u5916\u89c2\u6a21\u5757\u6982\u8ff0\u201d\u4e3b\u9898\u3002\u8981\u4e86\u89e3\u5982\u4f55\u5728\u5e94\u7528\u7a0b\u5e8f\u6a21\u578b\u4e2d\u5b9a\u4e49\u5916\u89c2\u89c4\u5219&#xff0c;\u8bf7\u53c2\u9605\u201c\u5728\u5e94\u7528\u7a0b\u5e8f\u6a21\u578b\u4e2d\u58f0\u660e\u6761\u4ef6\u5916\u89c2\u89c4\u5219\u201d\u4e3b\u9898\u3002<\/p>\n<h3>Prerequisites&#xff08;\u5148\u51b3\u6761\u4ef6&#xff09;<\/h3>\n<p>Make sure that the following conditions are met:<br \/>\n\u786e\u4fdd\u6ee1\u8db3\u4ee5\u4e0b\u6761\u4ef6&#xff1a;<\/p>\n<p>1.Your project contains the DevExpress.ExpressApp.ConditionalAppearance NuGet package.<br \/>\n\u60a8\u7684\u9879\u76ee\u5305\u542b DevExpress.ExpressApp.ConditionalAppearance NuGet \u5305\u3002<\/p>\n<p>2.The MySolution.Blazor.Server\\\\Startup.cs or MySolution.Win\\\\Startup.cs files contain the following line:<br \/>\nMySolution.Blazor.Server\\\\Startup.cs \u6216 MySolution.Win\\\\Startup.cs \u6587\u4ef6\u5305\u542b\u4ee5\u4e0b\u884c&#xff1a;<\/p>\n<p>C#<br \/>\nbuilder<span class=\"token punctuation\">.<\/span>Modules<br \/>\n    <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">AddConditionalAppearance<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\">\/\/ &#8230;<\/span><\/p>\n<p>For more information on how to add the Conditional Appearance Module, see: Conditional Appearance (Manage UI State).<br \/>\n\u6709\u5173\u5982\u4f55\u6dfb\u52a0\u6761\u4ef6\u5916\u89c2\u6a21\u5757\u7684\u66f4\u591a\u4fe1\u606f&#xff0c;\u8bf7\u53c2\u9605&#xff1a;\u6761\u4ef6\u5916\u89c2&#xff08;\u7ba1\u7406\u7528\u6237\u754c\u9762\u72b6\u6001&#xff09;\u3002<\/p>\n<h3>General Information&#xff08;\u4e00\u822c\u4fe1\u606f&#xff09;<\/h3>\n<p>To define an appearance rule in code, use the AppearanceAttribute. This attribute is declared in the DevExpress.ExpressApp.ConditionalAppearance namespace of the DevExpress.ExpressApp.ConditionalAppearance.v24.1.dll assembly. So to use the attribute, you will need to add the corresponding using directive.<br \/>\n\u8981\u5728\u4ee3\u7801\u4e2d\u5b9a\u4e49\u5916\u89c2\u89c4\u5219&#xff0c;\u8bf7\u4f7f\u7528AppearanceAttribute\u3002\u6b64\u7279\u6027\u5728DevExpress.ExpressApp.ConditionalAppearance.v24.1.dll\u7a0b\u5e8f\u96c6\u7684DevExpress.ExpressApp.ConditionalAppearance\u547d\u540d\u7a7a\u95f4\u4e2d\u58f0\u660e\u3002\u56e0\u6b64&#xff0c;\u8981\u4f7f\u7528\u8be5\u7279\u6027&#xff0c;\u60a8\u9700\u8981\u6dfb\u52a0\u76f8\u5e94\u7684using \u6307\u4ee4\u3002<\/p>\n<p>When applying the Appearance attribute, set the rule\u2019s Id using the AppearanceAttribute.Id parameter. The remaining rule properties are specified using the attribute\u2019s named parameters.<br \/>\n\u5e94\u7528\u5916\u89c2\u5c5e\u6027\u65f6&#xff0c;\u4f7f\u7528AppearanceAttribute.Id\u53c2\u6570\u8bbe\u7f6e\u89c4\u5219\u7684Id\u3002\u5176\u4f59\u89c4\u5219\u5c5e\u6027\u4f7f\u7528\u8be5\u5c5e\u6027\u7684\u547d\u540d\u53c2\u6570\u6307\u5b9a\u3002<\/p>\n<ul>\n<li>AppearanceAttribute.AppearanceItemType<\/li>\n<li>AppearanceAttribute.TargetItems<\/li>\n<li>AppearanceAttribute.Context<\/li>\n<li>AppearanceAttribute.Criteria<\/li>\n<li>AppearanceAttribute.BackColor<\/li>\n<li>AppearanceAttribute.FontColor<\/li>\n<li>AppearanceAttribute.FontStyle<\/li>\n<li>AppearanceAttribute.Enabled<\/li>\n<li>AppearanceAttribute.Visibility<\/li>\n<li>AppearanceAttribute.Method<\/li>\n<li>AppearanceAttribute.Priority<\/li>\n<\/ul>\n<p>When using the Appearance attribute, first specify which UI elements you are going to affect via the appearance rule: apply the Appearance attribute to either a business class or a business class property, and set its AppearanceItemType and TargetItems parameters. The following table illustrates several use cases.<br \/>\n\u5728\u4f7f\u7528\u201c\u5916\u89c2\u201d\u5c5e\u6027\u65f6&#xff0c;\u9996\u5148\u8981\u901a\u8fc7\u5916\u89c2\u89c4\u5219\u6307\u5b9a\u8981\u5f71\u54cd\u54ea\u4e9b\u7528\u6237\u754c\u9762\u5143\u7d20&#xff1a;\u5c06\u201c\u5916\u89c2\u201d\u5c5e\u6027\u5e94\u7528\u4e8e\u4e1a\u52a1\u7c7b\u6216\u4e1a\u52a1\u7c7b\u5c5e\u6027&#xff0c;\u5e76\u8bbe\u7f6e\u5176AppearanceItemType\u548cTargetItems\u53c2\u6570\u3002\u4e0b\u8868\u8bf4\u660e\u4e86\u51e0\u79cd\u7528\u4f8b\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/07\/20250730042655-68899f0fa4dac.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<p>Then, specify the rule\u2019s activity scope. For this purpose, use the following Appearance attribute parameters:<br \/>\n\u7136\u540e&#xff0c;\u6307\u5b9a\u89c4\u5219\u7684\u6d3b\u52a8\u8303\u56f4\u3002\u4e3a\u6b64&#xff0c;\u8bf7\u4f7f\u7528\u4ee5\u4e0b\u5916\u89c2\u5c5e\u6027\u53c2\u6570&#xff1a;<\/p>\n<ul>\n<li>AppearanceAttribute.Context &#8211; specify in which Views to activate the rule;&#xff08;\u6307\u5b9a\u5728\u54ea\u4e9b\u89c6\u56fe\u4e2d\u6fc0\u6d3b\u8be5\u89c4\u5219&#xff1b;&#xff09;<\/li>\n<li>AppearanceAttribute.Criteria &#8211; specify which criteria must be satisfied by the target object;&#xff08;\u6307\u5b9a\u76ee\u6807\u5bf9\u8c61\u5fc5\u987b\u6ee1\u8db3\u54ea\u4e9b\u6807\u51c6&#xff1b;&#xff09;<\/li>\n<li>AppearanceAttribute.Method &#8211; specify the method that returns true for the rule\u2019s activation (you can apply the Appearance attribute to this method and miss the Method parameter in the attribute\u2019s definition);&#xff08;\u6307\u5b9a\u4e00\u4e2a\u65b9\u6cd5&#xff0c;\u5f53\u89c4\u5219\u6fc0\u6d3b\u65f6\u8be5\u65b9\u6cd5\u8fd4\u56detrue&#xff08;\u4f60\u53ef\u4ee5\u5c06Appearance\u5c5e\u6027\u5e94\u7528\u4e8e\u6b64\u65b9\u6cd5&#xff0c;\u5e76\u4e14\u5728\u5c5e\u6027\u5b9a\u4e49\u4e2d\u7701\u7565Method\u53c2\u6570&#xff09;&#xff1b;&#xff09;<\/li>\n<li>AppearanceAttribute.Priority &#8211; specify the current rule\u2019s volume when several rules affect the same UI element.&#xff08;\u5f53\u591a\u4e2a\u89c4\u5219\u5f71\u54cd\u540c\u4e00\u4e2a\u7528\u6237\u754c\u9762\u5143\u7d20\u65f6&#xff0c;\u6307\u5b9a\u5f53\u524d\u89c4\u5219\u7684\u4f5c\u7528\u8303\u56f4\u3002&#xff09;<\/li>\n<\/ul>\n<p>For details on these attribute parameters refer to their description in the Reference help section.<br \/>\n\u6709\u5173\u8fd9\u4e9b\u5c5e\u6027\u53c2\u6570\u7684\u8be6\u7ec6\u4fe1\u606f&#xff0c;\u8bf7\u53c2\u9605\u53c2\u8003\u5e2e\u52a9\u90e8\u5206\u4e2d\u7684\u63cf\u8ff0\u3002<\/p>\n<p>The last step in the appearance rule definition is specifying required appearance customizations. For this purpose, use the following attribute parameters.<br \/>\n\u5916\u89c2\u89c4\u5219\u5b9a\u4e49\u7684\u6700\u540e\u4e00\u6b65\u662f\u6307\u5b9a\u6240\u9700\u7684\u5916\u89c2\u81ea\u5b9a\u4e49\u3002\u4e3a\u6b64&#xff0c;\u8bf7\u4f7f\u7528\u4ee5\u4e0b\u5c5e\u6027\u53c2\u6570\u3002<\/p>\n<ul>\n<li>AppearanceAttribute.BackColor<\/li>\n<li>AppearanceAttribute.FontColor<\/li>\n<li>AppearanceAttribute.FontStyle<\/li>\n<li>AppearanceAttribute.Enabled<\/li>\n<li>AppearanceAttribute.Visibility<\/li>\n<\/ul>\n<p>Rules declared via the Appearance attribute are reflected in the Application Model. They are collected in the corresponding Application | BOModel |  |AppearanceRules node. For details on this node, refer to the Declare Conditional Appearance Rules in the Application Model topic.<br \/>\n\u901a\u8fc7\u201c\u5916\u89c2\u201d\u5c5e\u6027\u58f0\u660e\u7684\u89c4\u5219\u4f1a\u53cd\u6620\u5728\u5e94\u7528\u7a0b\u5e8f\u6a21\u578b\u4e2d\u3002\u5b83\u4eec\u6536\u96c6\u5728\u76f8\u5e94\u7684\u201c\u5e94\u7528\u7a0b\u5e8f\u201d|\u201c\u4e1a\u52a1\u5bf9\u8c61\u6a21\u578b\u201d|\u201c&lt;\u7c7b&gt;\u201d|\u201c\u5916\u89c2\u89c4\u5219\u201d\u8282\u70b9\u4e2d\u3002\u6709\u5173\u6b64\u8282\u70b9\u7684\u8be6\u7ec6\u4fe1\u606f&#xff0c;\u8bf7\u53c2\u9605\u201c\u5728\u5e94\u7528\u7a0b\u5e8f\u6a21\u578b\u4e2d\u58f0\u660e\u6761\u4ef6\u5916\u89c2\u89c4\u5219\u201d\u4e3b\u9898\u3002<\/p>\n<h3>Examples&#xff08;\u793a\u4f8b&#xff09;<\/h3>\n<p>According to the rule demonstrated in the example below, the Product objects whose Price is more than 50 will be displayed in Red background using Maroon font color in List Views.<br \/>\n\u6839\u636e\u4ee5\u4e0b\u793a\u4f8b\u6240\u793a\u7684\u89c4\u5219&#xff0c;\u5728\u5217\u8868\u89c6\u56fe\u4e2d&#xff0c;\u4ef7\u683c\u8d85\u8fc750\u7684\u4ea7\u54c1\u5bf9\u8c61\u5c06\u4ee5\u6817\u8272\u5b57\u4f53\u663e\u793a\u5728\u7ea2\u8272\u80cc\u666f\u4e0a\u3002<\/p>\n<p>C# <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">EF<\/span> Core<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">using<\/span> <span class=\"token namespace\">DevExpress<span class=\"token punctuation\">.<\/span>ExpressApp<span class=\"token punctuation\">.<\/span>ConditionalAppearance<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n<span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Appearance<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;RedPriceObject&#034;<\/span><span class=\"token punctuation\">,<\/span> AppearanceItemType <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ViewItem&#034;<\/span><span class=\"token punctuation\">,<\/span> TargetItems <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;*&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    Criteria <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Price&gt;50&#034;<\/span><span class=\"token punctuation\">,<\/span> Context <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ListView&#034;<\/span><span class=\"token punctuation\">,<\/span> BackColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Red&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        FontColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Maroon&#034;<\/span><span class=\"token punctuation\">,<\/span> Priority <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Product<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">string<\/span><\/span> Name <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">decimal<\/span><\/span> Price <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\">ProductStatus<\/span> Status <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\">Category<\/span> Category <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ Make sure that you use options.UseChangeTrackingProxies() in your DbContext settings.<\/span><\/p>\n<p>C# <span class=\"token punctuation\">(<\/span>XPO<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">using<\/span> <span class=\"token namespace\">DevExpress<span class=\"token punctuation\">.<\/span>ExpressApp<span class=\"token punctuation\">.<\/span>ConditionalAppearance<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n<span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Appearance<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;RedPriceObject&#034;<\/span><span class=\"token punctuation\">,<\/span> AppearanceItemType <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ViewItem&#034;<\/span><span class=\"token punctuation\">,<\/span> TargetItems <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;*&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    Criteria <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Price&gt;50&#034;<\/span><span class=\"token punctuation\">,<\/span> Context <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ListView&#034;<\/span><span class=\"token punctuation\">,<\/span> BackColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Red&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        FontColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Maroon&#034;<\/span><span class=\"token punctuation\">,<\/span> Priority <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Product<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token function\">Product<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Session<\/span> session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">base<\/span><span class=\"token punctuation\">(<\/span>session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">string<\/span><\/span> Name <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">decimal<\/span><\/span> Price <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\">ProductStatus<\/span> Status <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\">Category<\/span> Category <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>According to the rule demonstrated in the example below, the Category property in List Views will be displayed in Blue font color when its value is \u201cSeafood\u201d.<br \/>\n\u6839\u636e\u4ee5\u4e0b\u793a\u4f8b\u4e2d\u5c55\u793a\u7684\u89c4\u5219&#xff0c;\u5f53\u5217\u8868\u89c6\u56fe\u4e2d\u7684\u201c\u7c7b\u522b\u201d\u5c5e\u6027\u503c\u4e3a\u201c\u6d77\u9c9c\u201d\u65f6&#xff0c;\u5176\u5b57\u4f53\u989c\u8272\u5c06\u663e\u793a\u4e3a\u84dd\u8272\u3002<\/p>\n<p>C# <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">EF<\/span> Core<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">using<\/span> <span class=\"token namespace\">DevExpress<span class=\"token punctuation\">.<\/span>ExpressApp<span class=\"token punctuation\">.<\/span>ConditionalAppearance<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n<span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Appearance<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;CategoryColoredInListView&#034;<\/span><span class=\"token punctuation\">,<\/span> AppearanceItemType <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ViewItem&#034;<\/span><span class=\"token punctuation\">,<\/span> TargetItems <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Category&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\nCriteria <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Category &#061; &#039;Seafood&#039;&#034;<\/span><span class=\"token punctuation\">,<\/span> Context <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ListView&#034;<\/span><span class=\"token punctuation\">,<\/span> FontColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Blue&#034;<\/span><span class=\"token punctuation\">,<\/span> Priority <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Product<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\">Category<\/span> Category <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">DefaultProperty<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">nameof<\/span><span class=\"token punctuation\">(<\/span>Name<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Category<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">string<\/span><\/span> Name <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ Make sure that you use options.UseChangeTrackingProxies() in your DbContext settings.<\/span><\/p>\n<p>C# <span class=\"token punctuation\">(<\/span>XPO<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">using<\/span> <span class=\"token namespace\">DevExpress<span class=\"token punctuation\">.<\/span>ExpressApp<span class=\"token punctuation\">.<\/span>ConditionalAppearance<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n<span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Appearance<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;CategoryColoredInListView&#034;<\/span><span class=\"token punctuation\">,<\/span> AppearanceItemType <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ViewItem&#034;<\/span><span class=\"token punctuation\">,<\/span> TargetItems <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Category&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\nCriteria <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Category &#061; &#039;Seafood&#039;&#034;<\/span><span class=\"token punctuation\">,<\/span> Context <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ListView&#034;<\/span><span class=\"token punctuation\">,<\/span> FontColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Blue&#034;<\/span><span class=\"token punctuation\">,<\/span> Priority <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Product<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token function\">Product<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Session<\/span> session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">base<\/span><span class=\"token punctuation\">(<\/span>session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\">Category<\/span> Category <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">DefaultProperty<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">nameof<\/span><span class=\"token punctuation\">(<\/span>Name<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Category<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token function\">Category<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Session<\/span> session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">base<\/span><span class=\"token punctuation\">(<\/span>session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">string<\/span><\/span> Name <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>According to the rule demonstrated in the example below, the Category layout item\u2019s caption in Product Detail Views is displayed in blue when the product\u2019s category is \u201cSeafood\u201d.<br \/>\n\u6839\u636e\u4ee5\u4e0b\u793a\u4f8b\u4e2d\u5c55\u793a\u7684\u89c4\u5219&#xff0c;\u5f53\u4ea7\u54c1\u7c7b\u522b\u4e3a\u201c\u6d77\u9c9c\u201d\u65f6&#xff0c;\u4ea7\u54c1\u8be6\u60c5\u89c6\u56fe\u4e2d\u7c7b\u522b\u5e03\u5c40\u9879\u7684\u6807\u9898\u5c06\u663e\u793a\u4e3a\u84dd\u8272\u3002<\/p>\n<p>C# <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">EF<\/span> Core<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">using<\/span> <span class=\"token namespace\">DevExpress<span class=\"token punctuation\">.<\/span>ExpressApp<span class=\"token punctuation\">.<\/span>ConditionalAppearance<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Product<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Appearance<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;CategoryColoredInDetailView&#034;<\/span><span class=\"token punctuation\">,<\/span> AppearanceItemType <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;LayoutItem&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n         TargetItems <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Category&#034;<\/span><span class=\"token punctuation\">,<\/span> Criteria <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Category &#061; &#039;Seafood&#039;&#034;<\/span><span class=\"token punctuation\">,<\/span> Context <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;DetailView&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n             FontColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Blue&#034;<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\">Category<\/span> Category <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">DefaultProperty<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">nameof<\/span><span class=\"token punctuation\">(<\/span>Name<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Category<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">string<\/span><\/span> Name <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ Make sure that you use options.UseChangeTrackingProxies() in your DbContext settings.<\/span><\/p>\n<p>C# <span class=\"token punctuation\">(<\/span>XPO<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">using<\/span> <span class=\"token namespace\">DevExpress<span class=\"token punctuation\">.<\/span>ExpressApp<span class=\"token punctuation\">.<\/span>ConditionalAppearance<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Product<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token function\">Product<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Session<\/span> session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">base<\/span><span class=\"token punctuation\">(<\/span>session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Appearance<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;CategoryColoredInDetailView&#034;<\/span><span class=\"token punctuation\">,<\/span> AppearanceItemType <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;LayoutItem&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n         TargetItems <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Category&#034;<\/span><span class=\"token punctuation\">,<\/span> Criteria <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Category &#061; &#039;Seafood&#039;&#034;<\/span><span class=\"token punctuation\">,<\/span> Context <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;DetailView&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n             FontColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Blue&#034;<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\">Category<\/span> Category <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">DefaultProperty<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">nameof<\/span><span class=\"token punctuation\">(<\/span>Name<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Category<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token function\">Category<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Session<\/span> session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">base<\/span><span class=\"token punctuation\">(<\/span>session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">string<\/span><\/span> Name <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>According to the rule demonstrated in the example below, the \u201cProductParameters\u201d layout group caption in the Product Detail View will be displayed in Blue font color when the Category property is set to \u201cSeafood\u201d.<br \/>\n\u6839\u636e\u4ee5\u4e0b\u793a\u4f8b\u6240\u793a\u89c4\u5219&#xff0c;\u5f53\u201c\u7c7b\u522b\u201d\u5c5e\u6027\u8bbe\u7f6e\u4e3a\u201c\u6d77\u9c9c\u201d\u65f6&#xff0c;\u4ea7\u54c1\u8be6\u7ec6\u4fe1\u606f\u89c6\u56fe\u4e2d\u7684\u201c\u4ea7\u54c1\u53c2\u6570\u201d\u5e03\u5c40\u7ec4\u6807\u9898\u5c06\u4ee5\u84dd\u8272\u5b57\u4f53\u663e\u793a\u3002<\/p>\n<p>C# <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">EF<\/span> Core<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">using<\/span> <span class=\"token namespace\">DevExpress<span class=\"token punctuation\">.<\/span>ExpressApp<span class=\"token punctuation\">.<\/span>ConditionalAppearance<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n<span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Appearance<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;LayoutGroupColoredInDetailView&#034;<\/span><span class=\"token punctuation\">,<\/span> AppearanceItemType <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;LayoutItem&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\nTargetItems <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ProductParametersLayoutGroup&#034;<\/span><span class=\"token punctuation\">,<\/span> Criteria <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Category &#061; &#039;Seafood&#039;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\nContext <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Product_DetailView&#034;<\/span><span class=\"token punctuation\">,<\/span> FontColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Blue&#034;<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Product<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">string<\/span><\/span> Name <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">decimal<\/span><\/span> Price <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\">ProductStatus<\/span> Status <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\">Category<\/span> Category <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">DefaultProperty<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">nameof<\/span><span class=\"token punctuation\">(<\/span>Name<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Category<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">string<\/span><\/span> Name <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ Make sure that you use options.UseChangeTrackingProxies() in your DbContext settings.<\/span><\/p>\n<p>C# <span class=\"token punctuation\">(<\/span>XPO<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">using<\/span> <span class=\"token namespace\">DevExpress<span class=\"token punctuation\">.<\/span>ExpressApp<span class=\"token punctuation\">.<\/span>ConditionalAppearance<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n<span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Appearance<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;LayoutGroupColoredInDetailView&#034;<\/span><span class=\"token punctuation\">,<\/span> AppearanceItemType <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;LayoutItem&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\nTargetItems <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ProductParametersLayoutGroup&#034;<\/span><span class=\"token punctuation\">,<\/span> Criteria <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Category &#061; &#039;Seafood&#039;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\nContext <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Product_DetailView&#034;<\/span><span class=\"token punctuation\">,<\/span> FontColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Blue&#034;<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Product<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token function\">Product<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Session<\/span> session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">base<\/span><span class=\"token punctuation\">(<\/span>session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">string<\/span><\/span> Name <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">decimal<\/span><\/span> Price <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\">ProductStatus<\/span> Status <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\">Category<\/span> Category <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">DefaultProperty<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">nameof<\/span><span class=\"token punctuation\">(<\/span>Name<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Category<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token function\">Category<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Session<\/span> session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">base<\/span><span class=\"token punctuation\">(<\/span>session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">string<\/span><\/span> Name <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>According to the rule demonstrated in the example below, a Product\u2019s Deactivate Action will be disabled when the Status property is set to \u201cInactive\u201d in all Product Views. Note that the Action ID specified in this rule contains the class name (\u201cProduct.Deactivate\u201d), because the Deactivate Action is declared using the ActionAttribute. If an Action is declared in a Controller, specify its ID without the class name, e.g., \u201cDelete\u201d or \u201cUnlink\u201d.<br \/>\n\u6839\u636e\u4ee5\u4e0b\u793a\u4f8b\u6240\u793a\u89c4\u5219&#xff0c;\u5f53\u6240\u6709\u4ea7\u54c1\u89c6\u56fe\u4e2d\u7684\u201c\u72b6\u6001\u201d\u5c5e\u6027\u8bbe\u7f6e\u4e3a\u201c\u5df2\u505c\u7528\u201d\u65f6&#xff0c;\u4ea7\u54c1\u7684\u201c\u505c\u7528\u201d\u64cd\u4f5c\u5c06\u88ab\u7981\u7528\u3002\u8bf7\u6ce8\u610f&#xff0c;\u6b64\u89c4\u5219\u4e2d\u6307\u5b9a\u7684\u64cd\u4f5cID\u5305\u542b\u7c7b\u540d&#xff08;\u201cProduct.Deactivate\u201d&#xff09;&#xff0c;\u56e0\u4e3a\u201c\u505c\u7528\u201d\u64cd\u4f5c\u662f\u4f7f\u7528ActionAttribute\u58f0\u660e\u7684\u3002\u5982\u679c\u67d0\u4e2a\u64cd\u4f5c\u5728\u63a7\u5236\u5668\u4e2d\u58f0\u660e&#xff0c;\u5219\u6307\u5b9a\u5176ID\u65f6\u65e0\u9700\u5305\u542b\u7c7b\u540d&#xff0c;\u4f8b\u5982\u201c\u5220\u9664\u201d\u6216\u201c\u53d6\u6d88\u94fe\u63a5\u201d\u3002<\/p>\n<p>C# <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">EF<\/span> Core<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">using<\/span> <span class=\"token namespace\">DevExpress<span class=\"token punctuation\">.<\/span>ExpressApp<span class=\"token punctuation\">.<\/span>ConditionalAppearance<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n<span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Appearance<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;ActionState&#034;<\/span><span class=\"token punctuation\">,<\/span> AppearanceItemType <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Action&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    TargetItems <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Product.Deactivate&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        Criteria <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Status &#061; &#039;Inactive&#039;&#034;<\/span><span class=\"token punctuation\">,<\/span> Context <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Any&#034;<\/span><span class=\"token punctuation\">,<\/span> Enabled <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Product<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\">ProductStatus<\/span> Status <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Action<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span>PredefinedCategory<span class=\"token punctuation\">.<\/span>RecordEdit<span class=\"token punctuation\">,<\/span> Caption <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Deactivate Product&#8230;&#034;<\/span><span class=\"token punctuation\">,<\/span> AutoCommit <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span><br \/>\n     TargetObjectsCriteria <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Status &#061; &#039;Active&#039;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      SelectionDependencyType <span class=\"token operator\">&#061;<\/span> MethodActionSelectionDependencyType<span class=\"token punctuation\">.<\/span>RequireSingleObject<span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">void<\/span><\/span> <span class=\"token function\">Deactivate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        Status <span class=\"token operator\">&#061;<\/span> ProductStatus<span class=\"token punctuation\">.<\/span>Inactive<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ Make sure that you use options.UseChangeTrackingProxies() in your DbContext settings.<\/span><\/p>\n<p>C# <span class=\"token punctuation\">(<\/span>XPO<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">using<\/span> <span class=\"token namespace\">DevExpress<span class=\"token punctuation\">.<\/span>ExpressApp<span class=\"token punctuation\">.<\/span>ConditionalAppearance<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n<span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Appearance<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;ActionState&#034;<\/span><span class=\"token punctuation\">,<\/span> AppearanceItemType <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Action&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    TargetItems <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Product.Deactivate&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        Criteria <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Status &#061; &#039;Inactive&#039;&#034;<\/span><span class=\"token punctuation\">,<\/span> Context <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Any&#034;<\/span><span class=\"token punctuation\">,<\/span> Enabled <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Product<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token function\">Product<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Session<\/span> session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">base<\/span><span class=\"token punctuation\">(<\/span>session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\">ProductStatus<\/span> Status <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Action<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span>PredefinedCategory<span class=\"token punctuation\">.<\/span>RecordEdit<span class=\"token punctuation\">,<\/span> Caption <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Deactivate Product&#8230;&#034;<\/span><span class=\"token punctuation\">,<\/span> AutoCommit <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span><br \/>\n     TargetObjectsCriteria <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Status &#061; &#039;Active&#039;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      SelectionDependencyType <span class=\"token operator\">&#061;<\/span> MethodActionSelectionDependencyType<span class=\"token punctuation\">.<\/span>RequireSingleObject<span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">void<\/span><\/span> <span class=\"token function\">Deactivate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        Status <span class=\"token operator\">&#061;<\/span> ProductStatus<span class=\"token punctuation\">.<\/span>Inactive<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>According to the rule demonstrated in the example below, the Product objects in List Views will be displayed in Green background using Black font color when the RuleMethod returns true.<br \/>\n\u6839\u636e\u4ee5\u4e0b\u793a\u4f8b\u4e2d\u5c55\u793a\u7684\u89c4\u5219&#xff0c;\u5f53RuleMethod\u8fd4\u56detrue\u65f6&#xff0c;\u5217\u8868\u89c6\u56fe\u4e2d\u7684\u4ea7\u54c1\u5bf9\u8c61\u5c06\u4ee5\u9ed1\u8272\u5b57\u4f53\u3001\u7eff\u8272\u80cc\u666f\u663e\u793a\u3002<\/p>\n<p>C# <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">EF<\/span> Core<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">using<\/span> <span class=\"token namespace\">DevExpress<span class=\"token punctuation\">.<\/span>ExpressApp<span class=\"token punctuation\">.<\/span>ConditionalAppearance<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Product<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">decimal<\/span><\/span> Price <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">virtual<\/span> <span class=\"token return-type class-name\">ProductStatus<\/span> Status <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">get<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">set<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Appearance<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;RuleMethod&#034;<\/span><span class=\"token punctuation\">,<\/span> AppearanceItemType <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ViewItem&#034;<\/span><span class=\"token punctuation\">,<\/span> TargetItems <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;*&#034;<\/span><span class=\"token punctuation\">,<\/span> Context <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ListView&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n     BackColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Green&#034;<\/span><span class=\"token punctuation\">,<\/span> FontColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Black&#034;<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">bool<\/span><\/span> <span class=\"token function\">RuleMethod<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>Price <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">10<\/span> <span class=\"token operator\">&amp;&amp;<\/span> Status <span class=\"token operator\">&#061;&#061;<\/span> ProductStatus<span class=\"token punctuation\">.<\/span>Active<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ Make sure that you use options.UseChangeTrackingProxies() in your DbContext settings.<\/span><\/p>\n<p>C# <span class=\"token punctuation\">(<\/span>XPO<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">using<\/span> <span class=\"token namespace\">DevExpress<span class=\"token punctuation\">.<\/span>ExpressApp<span class=\"token punctuation\">.<\/span>ConditionalAppearance<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Product<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token type-list\"><span class=\"token class-name\">BaseObject<\/span><\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token function\">Product<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Session<\/span> session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">base<\/span><span class=\"token punctuation\">(<\/span>session<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">decimal<\/span><\/span> Price <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\">ProductStatus<\/span> Status <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/&#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">[<\/span><span class=\"token attribute\"><span class=\"token class-name\">Appearance<\/span><span class=\"token attribute-arguments\"><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;RuleMethod&#034;<\/span><span class=\"token punctuation\">,<\/span> AppearanceItemType <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ViewItem&#034;<\/span><span class=\"token punctuation\">,<\/span> TargetItems <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;*&#034;<\/span><span class=\"token punctuation\">,<\/span> Context <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;ListView&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n     BackColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Green&#034;<\/span><span class=\"token punctuation\">,<\/span> FontColor <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Black&#034;<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><span class=\"token punctuation\">]<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token return-type class-name\"><span class=\"token keyword\">bool<\/span><\/span> <span class=\"token function\">RuleMethod<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>Price <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">10<\/span> <span class=\"token operator\">&amp;&amp;<\/span> Status <span class=\"token operator\">&#061;&#061;<\/span> ProductStatus<span class=\"token punctuation\">.<\/span>Active<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>There are more examples demonstrated in the FeatureCenter demo installed with XAF. This demo is located in the %PUBLIC%\\\\Documents\\\\DevExpress Demos 24.1\\\\Components\\\\XAF\\\\FeatureCenter.NETFramework.XPO folder by default.<br \/>\n\u5728\u4e0eXAF\u4e00\u8d77\u5b89\u88c5\u7684\u529f\u80fd\u4e2d\u5fc3\u6f14\u793a\u4e2d\u5c55\u793a\u4e86\u66f4\u591a\u793a\u4f8b\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b&#xff0c;\u6b64\u6f14\u793a\u4f4d\u4e8e %PUBLIC%\\\\Documents\\\\DevExpress Demos 24.1\\\\Components\\\\XAF\\\\FeatureCenter.NETFramework.XPO\u6587\u4ef6\u5939\u4e2d\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb113\u6b21\u3002\u672c\u6587\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728\u4ee3\u7801\u4e2d\u4f7f\u7528\u6761\u4ef6\u5916\u89c2\u6a21\u5757(Conditional Appearance)\u6765\u5b9a\u4e49UI\u5143\u7d20\u7684\u5916\u89c2\u89c4\u5219\u3002\u4e3b\u8981\u5185\u5bb9\u5305\u62ec\uff1a \u6761\u4ef6\u5916\u89c2\u6a21\u5757\u5141\u8bb8\u63a7\u5236UI\u5143\u7d20\uff08\u5982\u5217\u8868\u89c6\u56fe\u5c5e\u6027\u3001\u7f16\u8f91\u5668\u3001\u9759\u6001\u6587\u672c\u548c\u64cd\u4f5c\uff09\u7684\u663e\u793a\u3001\u9690\u85cf\u3001\u542f\u7528\/\u7981\u7528\u72b6\u6001\u3002 \u4f7f\u7528\u524d\u63d0\u6761\u4ef6\uff1a \u9879\u76ee\u4e2d\u9700\u5305\u542bConditionalAppearance NuGet\u5305 \u5728Startup.cs\u4e2d\u6dfb\u52a0\u6a21\u5757\u6ce8\u518c \u6838\u5fc3\u5b9e\u73b0\u65b9\u6cd5\uff1a \u4f7f\u7528AppearanceAttribute\u7279\u6027\u5b9a\u4e49\u89c4\u5219 \u901a\u8fc7\u53c2\u6570\u8bbe\u7f6e\u89c4\u5219ID\u3001\u76ee\u6807\u5143\u7d20\u7c7b\u578b\u3001\u4f5c\u7528\u8303\u56f4\u6761\u4ef6\u7b49 \u53ef\u81ea\u5b9a\u4e49\u80cc\u666f\u8272\u3001\u5b57\u4f53\u3001\u53ef\u89c1\u6027\u7b49\u5916\u89c2<\/p>\n","protected":false},"author":2,"featured_media":48520,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[895,4691,55,4690,4689,371],"topic":[],"class_list":["post-48521","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-net","tag-appearance","tag-c","tag-dev","tag-xaf","tag-371"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5b66\u4e60017-01 Declare Conditional Appearance Rules in Code\uff08\u5728\u4ee3\u7801\u4e2d\u58f0\u660e\u6761\u4ef6\u663e\u793a\u89c4\u5219\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/48521.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5b66\u4e60017-01 Declare Conditional Appearance Rules in Code\uff08\u5728\u4ee3\u7801\u4e2d\u58f0\u660e\u6761\u4ef6\u663e\u793a\u89c4\u5219\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb113\u6b21\u3002\u672c\u6587\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728\u4ee3\u7801\u4e2d\u4f7f\u7528\u6761\u4ef6\u5916\u89c2\u6a21\u5757(Conditional Appearance)\u6765\u5b9a\u4e49UI\u5143\u7d20\u7684\u5916\u89c2\u89c4\u5219\u3002\u4e3b\u8981\u5185\u5bb9\u5305\u62ec\uff1a \u6761\u4ef6\u5916\u89c2\u6a21\u5757\u5141\u8bb8\u63a7\u5236UI\u5143\u7d20\uff08\u5982\u5217\u8868\u89c6\u56fe\u5c5e\u6027\u3001\u7f16\u8f91\u5668\u3001\u9759\u6001\u6587\u672c\u548c\u64cd\u4f5c\uff09\u7684\u663e\u793a\u3001\u9690\u85cf\u3001\u542f\u7528\/\u7981\u7528\u72b6\u6001\u3002 \u4f7f\u7528\u524d\u63d0\u6761\u4ef6\uff1a \u9879\u76ee\u4e2d\u9700\u5305\u542bConditionalAppearance NuGet\u5305 \u5728Startup.cs\u4e2d\u6dfb\u52a0\u6a21\u5757\u6ce8\u518c \u6838\u5fc3\u5b9e\u73b0\u65b9\u6cd5\uff1a \u4f7f\u7528AppearanceAttribute\u7279\u6027\u5b9a\u4e49\u89c4\u5219 \u901a\u8fc7\u53c2\u6570\u8bbe\u7f6e\u89c4\u5219ID\u3001\u76ee\u6807\u5143\u7d20\u7c7b\u578b\u3001\u4f5c\u7528\u8303\u56f4\u6761\u4ef6\u7b49 \u53ef\u81ea\u5b9a\u4e49\u80cc\u666f\u8272\u3001\u5b57\u4f53\u3001\u53ef\u89c1\u6027\u7b49\u5916\u89c2\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/48521.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-30T04:26:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/07\/20250730042655-68899f0fa4dac.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/48521.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/48521.html\",\"name\":\"\u5b66\u4e60017-01 Declare Conditional Appearance Rules in Code\uff08\u5728\u4ee3\u7801\u4e2d\u58f0\u660e\u6761\u4ef6\u663e\u793a\u89c4\u5219\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2025-07-30T04:26:57+00:00\",\"dateModified\":\"2025-07-30T04:26:57+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/48521.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/48521.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/48521.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5b66\u4e60017-01 Declare Conditional Appearance Rules in Code\uff08\u5728\u4ee3\u7801\u4e2d\u58f0\u660e\u6761\u4ef6\u663e\u793a\u89c4\u5219\uff09\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u5b66\u4e60017-01 Declare Conditional Appearance Rules in Code\uff08\u5728\u4ee3\u7801\u4e2d\u58f0\u660e\u6761\u4ef6\u663e\u793a\u89c4\u5219\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/48521.html","og_locale":"zh_CN","og_type":"article","og_title":"\u5b66\u4e60017-01 Declare Conditional Appearance Rules in Code\uff08\u5728\u4ee3\u7801\u4e2d\u58f0\u660e\u6761\u4ef6\u663e\u793a\u89c4\u5219\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb113\u6b21\u3002\u672c\u6587\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728\u4ee3\u7801\u4e2d\u4f7f\u7528\u6761\u4ef6\u5916\u89c2\u6a21\u5757(Conditional Appearance)\u6765\u5b9a\u4e49UI\u5143\u7d20\u7684\u5916\u89c2\u89c4\u5219\u3002\u4e3b\u8981\u5185\u5bb9\u5305\u62ec\uff1a \u6761\u4ef6\u5916\u89c2\u6a21\u5757\u5141\u8bb8\u63a7\u5236UI\u5143\u7d20\uff08\u5982\u5217\u8868\u89c6\u56fe\u5c5e\u6027\u3001\u7f16\u8f91\u5668\u3001\u9759\u6001\u6587\u672c\u548c\u64cd\u4f5c\uff09\u7684\u663e\u793a\u3001\u9690\u85cf\u3001\u542f\u7528\/\u7981\u7528\u72b6\u6001\u3002 \u4f7f\u7528\u524d\u63d0\u6761\u4ef6\uff1a \u9879\u76ee\u4e2d\u9700\u5305\u542bConditionalAppearance NuGet\u5305 \u5728Startup.cs\u4e2d\u6dfb\u52a0\u6a21\u5757\u6ce8\u518c \u6838\u5fc3\u5b9e\u73b0\u65b9\u6cd5\uff1a \u4f7f\u7528AppearanceAttribute\u7279\u6027\u5b9a\u4e49\u89c4\u5219 \u901a\u8fc7\u53c2\u6570\u8bbe\u7f6e\u89c4\u5219ID\u3001\u76ee\u6807\u5143\u7d20\u7c7b\u578b\u3001\u4f5c\u7528\u8303\u56f4\u6761\u4ef6\u7b49 \u53ef\u81ea\u5b9a\u4e49\u80cc\u666f\u8272\u3001\u5b57\u4f53\u3001\u53ef\u89c1\u6027\u7b49\u5916\u89c2","og_url":"https:\/\/www.wsisp.com\/helps\/48521.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2025-07-30T04:26:57+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/07\/20250730042655-68899f0fa4dac.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"8 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/48521.html","url":"https:\/\/www.wsisp.com\/helps\/48521.html","name":"\u5b66\u4e60017-01 Declare Conditional Appearance Rules in Code\uff08\u5728\u4ee3\u7801\u4e2d\u58f0\u660e\u6761\u4ef6\u663e\u793a\u89c4\u5219\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2025-07-30T04:26:57+00:00","dateModified":"2025-07-30T04:26:57+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/48521.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/48521.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/48521.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"\u5b66\u4e60017-01 Declare Conditional Appearance Rules in Code\uff08\u5728\u4ee3\u7801\u4e2d\u58f0\u660e\u6761\u4ef6\u663e\u793a\u89c4\u5219\uff09"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/48521","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=48521"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/48521\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/48520"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=48521"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=48521"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=48521"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=48521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}