AgentStack
SKILL verified MIT Self-run

Devexpress Wpf Data Editors

skill-devexpress-agent-skills-devexpress-wpf-data-editors · by DevExpress

Build WPF applications with the DevExpress Data Editors library — text, numeric, date/time, lookup, combo/listbox, image, color, visualization and utility editors. Use when adding TextEdit, ButtonEdit, ComboBoxEdit, DateEdit, SpinEdit, LookUpEdit, MemoEdit, PasswordBoxEdit, ListBoxEdit, CheckEdit, ToggleSwitchEdit, BrowsePathEdit, ImageEdit, ColorEdit/PopupColorEdit, TrackBarEdit, ProgressBarEdit…

No reviews yet
0 installs
9 views
0.0% view→install

Install

$ agentstack add skill-devexpress-agent-skills-devexpress-wpf-data-editors

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Devexpress Wpf Data Editors? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

DevExpress WPF Data Editors

The DevExpress Data Editors library is a comprehensive set of input controls for WPF — text editors, numeric editors, date/time pickers, lookups, combos, list boxes, image/color editors, visualization editors, and simple buttons. All editors share a common base type (DevExpress.Xpf.Editors.BaseEdit) with a single EditValue property — the value the user is editing — plus a uniform API for masking, validation, formatting, and in-place use inside GridControl, PropertyGrid, Bar items, and similar containers.

> Two control families: editors that inherit from BaseEdit (have EditValue, support masks, validation, in-place mode) vs simple controls that do not (SimpleButton, DropDownButton, SplitButton, FlyoutControl, RangeControl, Calculator, DateNavigator, DateRangeControl, TimePicker). The two families are documented separately — see Navigation Guide.

When to Use This Skill

Use this skill when you need to:

  • Add a text input with masked input, validation, or formatting
  • Provide a combobox, listbox, or lookup with single or multiple selection
  • Edit numeric, currency, or percentage values with constrained input
  • Pick dates, times, ranges, or display a calendar
  • Browse for a file path, edit a password, or accept a long memo
  • Show visualization editors: progress bars, sparklines, ratings, trackbars
  • Show image or color pickers (inline or popup)
  • Embed a DevExpress editor as an in-place editor inside GridControl, PropertyGrid, Bar, etc.
  • Add buttons inside a ButtonEdit (or its descendants) for clear / apply / browse actions
  • Customize masks (numeric, date-time, simple, regex, custom)

Prerequisites & Installation

NuGet Packages

| Package | Purpose | |---------|---------| | DevExpress.Wpf.Core | Simple controls (SimpleButton, DropDownButton, SplitButton), shared infrastructure | | DevExpress.Wpf.Grid.Core | Required when you use LookUpEdit / SearchLookUpEdit / token lookups (these classes live in DevExpress.Xpf.Grid.LookUp) |

The Data Editors themselves (TextEdit, DateEdit, etc.) are part of DevExpress.Wpf.Core. There is no separate "Editors" NuGet — installing DevExpress.Wpf.Core brings them in.

.NET (6/7/8+)

dotnet add package DevExpress.Wpf.Core

For lookups:

dotnet add package DevExpress.Wpf.Grid.Core

Add net8.0-windows and true to .csproj.

.NET Framework (4.6.2+)

Either use the same NuGet packages, or reference the assemblies installed by the Unified Component Installer (DevExpress.Xpf.Core.v.dll).

Important: All DevExpress packages in a project must share the same version. A valid DevExpress license is required.

Before You Start — Ask the Developer

Before generating code, confirm:

  1. Target framework: .NET 8+, .NET 6/7, or .NET Framework 4.x?
  2. Standalone or in-place: Will the editor sit on a form, or be embedded inside GridControl / PropertyGrid (which uses the *EditSettings variant)?
  3. Editor type: Which editor fits the data? See [editor-varieties.md](references/editor-varieties.md) for the full inventory.
  4. Operation mode: For editors that support StyleSettings (ComboBoxEdit, LookUpEdit, ListBoxEdit, DateEdit, TrackBarEdit, ProgressBarEdit, SparklineEdit) — which sub-mode? (e.g., Checked vs Token vs Radio ComboBox.)
  5. Masking: Does the input need a mask (Numeric, DateTime, Simple, RegEx, etc.)? See [masks.md](references/masks.md).
  6. Validation: Inline validation via Validate event, IDataErrorInfo, or DataAnnotations?

> Rule: If the developer's answer is ambiguous or missing, ask before generating code. Do not guess.

Component Overview

The library splits into two families:

Family 1: BaseEdit Descendants (Have EditValue)

All editors that inherit from DevExpress.Xpf.Editors.BaseEdit share:

  • EditValue — the value being edited. Bind this for two-way data binding.
  • StyleSettings — switches the editor's operation mode (e.g., regular vs checked vs token ComboBox). NOT related to WPF's Style property.
  • InvalidValueBehavior, AllowNullInput, DisplayFormatString — value handling
  • In-place version: an *EditSettings class (e.g., TextEditSettings, ComboBoxEditSettings) used inside grid columns, property-grid cells, etc.
  • Mask support: via MaskType, Mask, MaskUseAsDisplayFormat (most text editors)
  • Validation: Validate event, Validation.HasError, BaseEdit.HasValidationError

Family 2: Simple Controls (No EditValue)

Live in DevExpress.Xpf.Core and DevExpress.Xpf.Editors:

  • SimpleButton — themed button
  • DropDownButton, SplitButton — buttons with popups
  • Calculator — standalone calculator UI
  • FlyoutControl — modal/modeless popup overlay
  • RangeControl — interactive range slider with a visualization area
  • DateNavigator, DateRangeControl, TimePicker — standalone date/time pickers (the date/time editors like DateEdit are in Family 1)

These are documented in [simple-controls.md](references/simple-controls.md).

XAML Namespaces

xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
  • dxe: — most editors (TextEdit, ButtonEdit, ComboBoxEdit, DateEdit, etc.)
  • dxg:LookUpEdit and its style-settings variants (live in DevExpress.Xpf.Grid.LookUp)
  • dx:SimpleButton, DropDownButton, SplitButton, theme manager

Documentation & Navigation Guide

Getting Started

Refer to [references/getting-started.md](references/getting-started.md)

When you need to:

  • Set up a new .NET 6/7/8+ WPF project with Data Editors
  • Add the right NuGet packages
  • Place the first TextEdit / DateEdit / ComboBoxEdit on a window
  • Bind EditValue two-way to a ViewModel property

Editor Varieties — BaseEdit Descendants and Operation Modes

Refer to [references/editor-varieties.md](references/editor-varieties.md)

When you need to:

  • Pick the right editor for a data type (text, numeric, date, picker, list)
  • Understand which editors have EditValue (and bindable two-way)
  • Switch a ComboBoxEdit / ListBoxEdit / LookUpEdit between default, checked, radio, token, and search modes via StyleSettings
  • Switch DateEdit between calendar / month / picker modes
  • Switch TrackBarEdit / ProgressBarEdit / SparklineEdit between visualization styles

Simple Controls — Non-BaseEdit Controls

Refer to [references/simple-controls.md](references/simple-controls.md)

When you need to:

  • Add a themed button (SimpleButton), dropdown button, or split button
  • Show a standalone calendar (DateNavigator), date-range picker, or time picker
  • Embed a calculator UI
  • Use FlyoutControl for popup/notification overlays
  • Use RangeControl for interactive range selection with a visualization track

Masks

Refer to [references/masks.md](references/masks.md)

When you need to:

  • Restrict input to numeric, currency, or percentage values
  • Enforce a date/time format with caret navigation
  • Match a fixed pattern like a phone number, zip code, or SSN (Simple masks)
  • Apply a regex pattern with autocomplete
  • Implement a custom mask via CustomMask event
  • Save mask literals into EditValue, or use mask as display format

Buttons in ButtonEdit Descendants

Refer to [references/buttons.md](references/buttons.md)

When you need to:

  • Add custom buttons inside ButtonEdit (or ComboBoxEdit, LookUpEdit, SpinEdit, BrowsePathEdit, PopupBaseEdit, PopupColorEdit, etc. — all ButtonEdit descendants)
  • Hide the default button, position buttons on the left, change glyphs
  • Bind button Command / Click to ViewModel actions
  • Use ButtonInfo.GlyphKind predefined glyphs, or a custom ContentTemplate

Quick Start Example

A registration form using common editors with two-way binding:


    
        
        

        
        

        
        

        
        

        
    
public class MainViewModel : ViewModelBase {
    public string Email { get; set; } = "";
    public string Password { get; set; } = "";
    public DateTime Birthday { get; set; } = DateTime.Today;
    public string Country { get; set; } = "";
    public ObservableCollection Countries { get; } =
        new() { "USA", "Canada", "UK", "Germany" };

    public ICommand RegisterCommand => new DelegateCommand(() => { /* ... */ });
}

> Two-way binding always uses EditValue, not Text or ValueEditValue is the canonical bindable property on BaseEdit.

Key Properties & API Surface

BaseEdit (Base for All Editors)

| Property | Type | Description | |---|---|---| | EditValue | object | The bound value. Always two-way bindable. Type depends on the editor. | | StyleSettings | BaseEditStyleSettings | Switches the editor's operation mode. Not the WPF Style property. | | IsReadOnly | bool | Read-only mode. | | AllowNullInput | bool | When true, Ctrl-D / Ctrl-0 clears the value. | | InvalidValueBehavior | InvalidValueBehavior | What happens when value is invalid: WaitForValidValue (default) or AllowLeaveEditor. | | DisplayFormatString | string | .NET format string used in display mode (when mask isn't used as display). | | Validate | event | Per-editor validation hook. | | HasValidationError | bool | True when the current input is invalid. |

TextEdit (Common Base for Most Text-Style Editors)

| Property | Type | Description | |---|---|---| | Text | string | The raw text representation. Prefer EditValue for binding. | | MaskType | MaskType | None, Numeric, DateTime, DateTimeAdvancingCaret, Simple, Regular, RegEx, Custom, plus date-only / time-only / timespan / date-time-offset. | | Mask | string | The mask string. Format depends on MaskType. | | MaskUseAsDisplayFormat | bool | Use the mask for display, not just edit. | | MaskShowPlaceHolders | bool | Show _ placeholders for empty positions (RegEx mode). | | MaskAutoComplete | AutoCompleteType | None, Strong, Optimistic, Default (RegEx mode). | | MaskSaveLiteral | bool | Include literal characters in EditValue (Simple/Regular mode). | | MaskCulture | CultureInfo | Override the culture used by the mask. |

ButtonEdit (Base for All Editors with Buttons)

| Property | Type | Description | |---|---|---| | Buttons | ButtonInfoCollection | Collection of ButtonInfo items shown inside the editor. | | AllowDefaultButton | bool | Show the editor's built-in default button (e.g., the dropdown arrow on ComboBoxEdit). |

ButtonInfo

| Property | Type | Description | |---|---|---| | Content | object | Button content (text, glyph image, etc.). | | ContentTemplate | DataTemplate | Custom rendering for the button. | | GlyphKind | GlyphKind? | Predefined glyph: Apply, Cancel, DropDown, Down, Up, Left, Right, Plus, Minus, Search, Refresh, Edit, Undo, Redo, First, Last, NextPage, PrevPage, Custom, etc. | | IsLeft | bool | Place the button on the left side of the editor (default: right). | | Visibility | Visibility | Standard WPF visibility. | | Command / CommandParameter | ICommand / object | MVVM command binding. | | Click | event | Click event handler. |

Common Patterns

Pattern 1: Bind EditValue Two-Way to a ViewModel

Mode=TwoWay is usually the default for EditValue on most editors, but specifying it explicitly is good practice. UpdateSourceTrigger=PropertyChanged writes the binding source on every keystroke; the default LostFocus is fine for forms but not for live validation.

Pattern 2: Operation Mode via StyleSettings

Switch ComboBoxEdit to a checked combo:


    
        
    

Switch LookUpEdit to search mode with token output:


    
        
    

Pattern 3: Masked Phone Input

Pattern 4: ButtonEdit with Clear and Apply Buttons


    
    

Pattern 5: In-Place Editor Inside GridControl


    
        
    

> Important: When embedding inside a grid, use the *EditSettings class (e.g., SpinEditSettings), NOT the editor class itself (SpinEdit). The settings class configures the inline editor; the grid creates the actual editor on demand.

Troubleshooting

| Symptom | Cause | Solution | |---|---|---| | EditValue doesn't update the ViewModel | Default UpdateSourceTrigger=LostFocus — value writes when focus leaves | Set UpdateSourceTrigger=PropertyChanged if you need keystroke-level updates. | | Mask is ignored when value is set via Text | Mask types Numeric / DateTime only apply when value is set via EditValue | Bind EditValue (not Text); the mask honors the value's type. | | dxe: prefix unresolved in XAML | Missing namespace declaration | Add xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors". | | LookUpEdit not found in dxe: namespace | LookUpEdit lives in the grid namespace, not editors | Use xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" and `. | | Focus won't leave a masked editor | Default InvalidValueBehavior = WaitForValidValue — partial value blocks leaving | Set InvalidValueBehavior = AllowLeaveEditor if partial values are acceptable. | | Buttons collection ignores items | AllowDefaultButton="True" keeps the default button visible; only descendants of ButtonEdit have Buttons | Set AllowDefaultButton="False" to hide the default; verify the control inherits from ButtonEdit. | | Mask not applied in GridControl cell | Editor settings ignored — used TextEdit instead of TextEditSettings in EditSettings | Use *EditSettings (e.g., ) inside . | | EditValue is always string from a masked numeric editor | Bound to Text instead of EditValue, or EditValue type isn't numeric | Bind EditValue to a decimal / double / int property. | | Operation mode doesn't change anything | Set Style property by mistake; or assigned wrong settings type | Assign to StyleSettings (e.g., ); match the settings class to the editor (ComboBoxStyleSettings, CheckedComboBoxStyleSettings`, etc.). |

Constraints & Rules

CRITICAL — follow these rules in every interaction:

  1. Build verification: After any changes, run dotnet build and report errors before claiming success.
  2. Target framework: Editors are Windows-only. .csproj must target net{X}-windows with true.
  3. NuGet packages: DevExpress.Wpf.Core for most editors; add DevExpress.Wpf.Grid.Core for LookUpEdit family.
  4. Version consistency: All DevExpress packages share the same version (e.g., 26.1.x).
  5. XAML namespaces: dxe: for editors, dxg: for LookUpEdit, dx: for simple buttons and themes. Don't mix them up.
  6. Bind EditValue, not Text: EditValue is the canonical bindable property on BaseEdit. Text is a string view and bypasses type-aware mask handling.
  7. StyleSettings is NOT WPF Style: it's a DevExpress-specific operation-mode switch. Don't confuse the two.
  8. In-place uses *EditSettings: inside GridControl columns or PropertyGrid cells, embed ` (the settings class), not ` (the control class).
  9. License: DevExpress requires a valid license. Remind the developer on license-related errors.

Using DevExpress Documentation MCP

If the DxDocs MCP server is available, supplement this skill with:

  • Search: devexpress_docs_search(technology="WPF Editors", query="")
  • Fetch: devexpress_docs_get_content(url="")

When to use MCP vs. built-in references:

  • Built-in references: Editor inventory, operation modes, masks, button customization.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.