AppearanceAttribute.Context Property
Specifies the Views representing the activity scope for the conditional appearance rule generated from the current attribute.
Namespace: DevExpress.ExpressApp.ConditionalAppearance
Assembly: DevExpress.Persistent.Base.v25.1.dll
NuGet Package: DevExpress.Persistent.Base
Declaration
Property Value
Type | Description |
---|---|
String | A string that is semicolon separated names of the Views in which the conditional appearance rule is in effect. |
Remarks
The Context property can have the following values.
Context | Appearance Rule’s Activity Scope | Example |
---|---|---|
A predefined context - “DetailView”, “ListView” or “Any”. | Detail Views, List Views or all Views, respectively. | Any |
A semicolon-separated list of View identifiers. | Specified Views only. | MyClass_ListView;MyClass_DetailView |
The “Any” predefined context, followed by a semicolon-separated list of View identifiers. | All Views except the Views specified via View identifiers. | Any;MyClass_ListView;MyClass_LookupListView |
The “DetailView” or “ListView” predefined context, followed by a semicolon-separated list of View identifiers. | All Detail Views or List Views respectively, in addition to Views specified via View identifiers. | DetailView;MyClass_ListView |
By default, Context is set to “Any”.
Examples
Example 1
The following code snippet changes the ProductParameters
layout group caption in Product Detail Views to blue when the product’s category is “Seafood”:
using DevExpress.ExpressApp.ConditionalAppearance;
//...
[Appearance("LayoutGroupColoredInDetailView", AppearanceItemType = "LayoutItem",
TargetItems = "ProductParametersLayoutGroup", Criteria = "Category = 'Seafood'",
Context = "Product_DetailView", FontColor = "Blue")]
public class Product : BaseObject {
public virtual string Name { get; set; }
public virtual decimal Price { get; set; }
public virtual ProductStatus Status { get; set; }
public virtual Category Category { get; set; }
}
[DefaultProperty(nameof(Name))]
public class Category : BaseObject {
public virtual string Name { get; set; }
}
// Make sure that you use options.UseChangeTrackingProxies() in your DbContext settings.
Example 2
The following code snippet changes the Product
objects to maroon on a red background in List Views when the product’s price exceeds 50:
using DevExpress.ExpressApp.ConditionalAppearance;
//...
[Appearance("RedPriceObject", AppearanceItemType = "ViewItem", TargetItems = "*",
Criteria = "Price>50", Context = "ListView", BackColor = "Red",
FontColor = "Maroon", Priority = 2)]
public class Product : BaseObject {
public virtual string Name { get; set; }
public virtual decimal Price { get; set; }
public virtual ProductStatus Status { get; set; }
public virtual Category Category { get; set; }
}
// Make sure that you use options.UseChangeTrackingProxies() in your DbContext settings.
Example 3
The following code snippet disables a Product’s Deactivate Action when the Status
property is set to “Inactive” in all Product Views. The Action ID specified in this rule contains the class name (“Product.Deactivate”) because the Deactivate Action is declared using the ActionAttribute. If you declare an Action in a Controller, specify its ID without the class name, for example, “Delete” or “Unlink”.
using DevExpress.ExpressApp.ConditionalAppearance;
//...
[Appearance("ActionState", AppearanceItemType = "Action",
TargetItems = "Product.Deactivate",
Criteria = "Status = 'Inactive'", Context = "Any", Enabled = false)]
public class Product : BaseObject {
public virtual ProductStatus Status { get; set; }
[Action(PredefinedCategory.RecordEdit, Caption = "Deactivate Product...", AutoCommit = true,
TargetObjectsCriteria = "Status = 'Active'",
SelectionDependencyType = MethodActionSelectionDependencyType.RequireSingleObject)]
public void Deactivate() {
Status = ProductStatus.Inactive;
}
}
// Make sure that you use options.UseChangeTrackingProxies() in your DbContext settings.
Note
When you use a Conditional Appearance Rule (for example, the Appearance
attribute) to hide an Action, it remains visible in List Views. XAF displays this Action as disabled. This helps avoid complex calculations that could hinder the application’s performance.
To see the Appearance attribute in action, refer to the FeatureCenter demo installed with XAF. This demo is located in the %PUBLIC%\Documents\DevExpress Demos 25.1\Components\XAF\FeatureCenter.NETFramework.XPO folder by default.