Skip to main content
All docs
V25.1
  • v25.1 Release Notes

    • 18 minutes to read

    Tip

    Visit our website to explore the latest features across the DevExpress product line: What’s New in the Latest Version.

    License Keys — New in v25.1

    This new release requires every developer/build machine to store a DevExpress license key associated with your account.

    DevExpress Unified Installer (Windows) automatically obtains your License Key and places it into its correct location. Run the installer in Repair/Register mode to update your key when necessary. If you used our Unified Installer before license keys were introduced (before v25.1), you should not experience any changes when installing or updating DevExpress products.

    If you bypass the DevExpress Unified Installer, you can download your license key and register it in the system manually (via a file on disk or an environment variable). Review detailed instructions in the following help topic: Online NuGet Feeds, CI/CD, and Other Installation Methods (Windows, macOS, Linux).

    Accessibility

    Keyboard Navigation in Backstage Navigation (Ribbon UI)

    We added full keyboard navigation support to the WPF Ribbon Backstage View. Users can now navigate and interact with all Backstage elements (such as tabs, buttons, and menu items) without using a mouse. This enhancement improves accessibility and streamlines user workflows, especially for keyboard-centric business solutions.

    DevExpress Ribbon Backstage View v25.1

    Keyboard Navigation in DateNavigator and DateEdit

    Our WPF DateNavigator and DateEdit controls now support keyboard navigation for all UI elements. When DateEdit is focused, press Alt+Down to activate the popup, then use the Down arrow to focus on the date area. You can navigate through dates using arrow keys, Shift+Tab to focus the header, and Tab to move between Today and Close buttons.

    DevExpress DateEdit Keyboard Navigation v25.1

    Improved Keyboard Navigation in Layout Control

    We enhanced keyboard accessibility in our WPF Layout Control to deliver a more intuitive and efficient user experience:

    • Layout Control - Users can now expand and collapse layout groups using the keyboard. This offers faster navigation and improved accessibility, especially for complex layouts.

    • Tile Layout Control - Users can navigate between tiles using arrow keys and press Enter to trigger a tile’s associated action (fires the tile’s Click event). This feature streamlines interaction in tile-based UIs and improves usability for keyboard users.

    Avalonia XPF

    Avalonia XPF allows WPF projects to run on macOS and Linux. The Avalonia team has added support for DevExpress UI controls. We migrated some of our demos to leverage Avalonia to help you evaluate whether Avalonia XPF meets your cross-platform development needs.

    DevExpress WPF Avalonia v25.1

    View Example: DevExpress Avalonia XPF Demo

    Note

    Important Considerations

    Avalonia XPF was not developed by DevExpress. Support for DevExpress controls is managed by the Avalonia team. You can find a list of known limitations here: Supported DevExpress Components.

    Avalonia XPF is different from Avalonia UI. While Avalonia XPF enables WPF applications to run on macOS and Linux, Avalonia UI is a separate framework for building cross-platform apps from the ground-up. DevExpress components do not support Avalonia UI.

    Performance Enhancements

    Our Lightweight (LW) Themes significantly reduce view load time and memory consumption. In v25.1, we reworked our Demo Center modules to help you evaluate performance improvements across our WPF controls. We refactored demos, used lightweight themes, and resource preloading.

    DevExpress WPF Chart Performance v25.1

    .NET 9 Enhancements

    Drag & Drop Between Apps

    Microsoft removed BinaryFormatter from .NET 9 for security reasons. Standard drag & drop operations between DevExpress WPF controls within a single application continue to work as expected (no changes are required on your end). Internally, our WPF controls no longer rely on BinaryFormatter for these scenarios.

    If your solution relies on multi-application drag & drop operations, you will need to serialize and deserialize data manually. You can use JsonSerializer and handle drag events as described in the following topic: Implement Drag & Drop with JsonSerializer.

    While it is technically possible to revert to previous behavior by installing the BinaryFormatter compatibility package, we strongly discourage this approach due to its known security risks.

    Please refer to the following Breaking Change advisory for additional information in this regard: Changes due to the deprecation of Microsoft’s BinaryFormatter.

    Windows 11 Colors

    System and Accent Color Support

    To maintain visual consistency between your app and the operating system, DevExpress Win11 Lightweight themes can automatically select accent color based on a user’s system settings. To enable this capability, activate CompatibilitySettings.UseLightweightThemes and specify the ApplicationThemeHelper.ApplicationThemeName property:

    using DevExpress.Xpf.Core;
    // ...
    public partial class App : Application {
        static App() {
            CompatibilitySettings.UseLightweightThemes = true;
            ApplicationThemeHelper.ApplicationThemeName = LightweightTheme.Win11SystemColors.Name;
            //...
        }
    }
    

    DevExpress WPF Win11 Colors v25.1

    Lightweight Themes

    Set Theme-Specific Values in XAML

    Our new LWThemeValue markup extension helps you design views for multiple DevExpress themes. LWThemeValue allows you to set a property based on the current theme in XAML. You can assign it a specific value or a static resource.

    <Window.Resources>
        <SolidColorBrush x:Key="office2019Color" Color="Green"/>
        <SolidColorBrush x:Key="win11Color" Color="Red"/>
    </Window.Resources>
    
    <Border Margin="{LWThemeValue Office2019='0,0,0,0', Win11='8,8,8,8'}"
        CornerRadius="{LWThemeValue Office2019=0, Win11=4}"
        BorderBrush="{LWThemeValue Office2019={StaticResource office2019Color}, Win11={StaticResource win11Color}}"
        BorderThickness="1">
        <!--...-->
    </Border>
    

    You can also group theme-dependent resources into dictionaries and dynamically apply them using the LWThemeDictionary class.

    <!-- Dictionary1.xaml -->
    <ResourceDictionary ...>
        <SolidColorBrush x:Key="myBrush">Red</SolidColorBrush>
    </ResourceDictionary>
    
    <!-- Dictionary2.xaml -->
    <ResourceDictionary ...>
        <SolidColorBrush x:Key="myBrush">Blue</SolidColorBrush>
    </ResourceDictionary>
    
    <UserControl ...>
        <UserControl.Resources>
            <LWThemeDictionary Default="Resources/Dictionary1.xaml" Win11="Resources/Dictionary2.xaml">
        </UserControl.Resources>
        <Border Background="{DynamicResource myBrush}"/>
    </UserControl>
    

    New AI Chat Control

    Our new AI Chat Control allows you to incorporate an interactive, Copilot-inspired chat-based UI within your WPF application. This AI-powered control leverages BlazorWebView and reuses the DevExpress Blazor AI Chat component (DxAIChat).

    Note

    To use the WPF AIChatControl you must have one of the following active subscriptions: Universal Subscription | DXperience Subscription | WPF and ASP.NET & Blazor. The DevExpress AI Chat Control can only be used in WPF applications that target the .NET 8+ framework.

    DevExpress WPF AI Chat Control v25.1

    Features include:

    • Seamless Integration with AI Services
    • Markdown Message Rendering
    • Copy and Regenerate Responses
    • Manual Handling of Chat Messages
    • Leverage OpenAI Assistant to Chat with Your Own Data
    • Save and Load Chat History
    • Prompt Suggestions
    • File Attachments
    • Streaming
    • Stop Response
    • DevExpress Light and Dark Themes

    See the following help topic for more information: AI Chat Control.

    New AI-powered Extensions

    Semantic Search (Data Grid)

    Our WPF Data Grid now supports an enhanced, AI-powered search experience. Unlike traditional keyword-based search, semantic search leverages Natural Language Processing (NLP) to understand the meaning behind a query — not just exact words used.

    Semantic search uses an embedding generator to convert text into numerical vector representations. Vector embeddings are stored in a vector store (for example, a database, in-memory collection, or a custom implementation that stores vector values in files). When a user enters a search query, the search engine computes similarity scores between the query vector and stored data vectors to return the most relevant results.

    Once AI-driven semantic search is enabled, a dropdown button appears within the search box. The popup menu allows users to specify the desired search mode:

    • Standard - traditional keyword-based search.
    • Semantic - vector-based semantic search to find conceptually similar items.
    • Hybrid - a combination of standard and semantic search.

    Run Demo

    Semantic search can operate in two modes:

    • Filter Mode - Displays only matching records.
    • Search Mode - Highlights relevant data rows for more intuitive data discovery.

    DevExpress WPF Semantic Search Modes v25.1

    See the following help topic for more information: Semantic Search.

    Smart Search (Ribbon and Accordion)

    DevExpress WPF Ribbon and Accordion controls now support AI-powered search. Smart Search works alongside traditional search algorithms to deliver a more powerful and user-friendly search experience.

    When a user pauses text entry in the search field (within the Ribbon or Accordion control), the control sends the current search query to an AI service that understands context, synonyms, and user intent beyond exact keyword matches. Once the AI service returns results, the control filters items accordingly.

    DevExpress WPF Ribbon Smart Search v25.1

    Run Demo

    Smart Paste (Data Grid and Layout Control)

    Smart Paste is an AI-ready feature that transforms traditional copy-paste operations. We first introduced this AI-powered feature in our WinForms Data Grid and Layout Control in December 2024. v25.1 extends this functionality to our WPF Data Grid, TreeList, and Layout controls.

    When Smart Paste is activated, the “Smart Paste” command is automatically added to a control’s popup menu. When a user copies data from a source (such as a spreadsheet, document, or web page) and pastes it into a Data Grid or Layout Control-powered form, Smart Paste automatically interprets content and maps data to correct data fields or cells.

    Run Demo

    Note

    DevExpress does not offer a REST API or ship any built-in LLMs/SLMs. Instead, we follow the BYOL (“bring your own license”) principle. To use these features, you need to have an active subscription to AI services (e.g., Azure, Open AI, Google Gemini, Mistral AI, etc.) and obtain the REST API endpoint, key, and model deployment name. These variables must be specified at runtime to enable DevExpress AI-powered Extensions in your WinForms application.

    AI Assistant (PDF Viewer)

    You can now utilize AI-powered Summarize, Translate, and Ask AI features when using the DevExpress WPF PDF Viewer. You can desired AI operation using the PDF Viewer’s context menu.

    AI-powered behaviors for the DevExpress WPF PDF Viewer have the same prerequisites and leverage the same integration mechanisms as other AI extensions in our product line: DevExpress AI-powered Extensions for WPF.

    DevExpress WPF PDF Viewer - AI Behaviors  v25.1

    Run Demo

    Data Grid & TreeList

    Multi-Cell Editing for Selected Rows

    We introduced multi-cell editing in December 2024, allowing users to apply the same value to multiple selected cells simultaneously. Previously, this feature required multi-cell selection to be enabled.

    In v25.1, we improved batch-editing workflow. Multi-cell editing now also supports multiple row selection. Users can use this feature whether they select cells or entire rows.

    Multi-Cell Editing for Selected Rows - WPF Data Grid

    To enable this feature, set the TableView.MultiCellEditMode property to MultiCellEditMode.FocusedColumn:

    <dxg:GridControl x:Name="grid"
                             ItemsSource="{Binding Path=Invoices, Source={StaticResource NWindDataLoader}}"
                             SelectionMode="Row">
        <dxg:GridControl.View>
            <dxg:TableView x:Name="defaultView"
                           MultiCellEditMode="FocusedColumn"/>
        </dxg:GridControl.View>
    </dxg:GridControl>
    

    Per-Column Control of Editor Button Visibility

    In v25.1, we added the EditorButtonShowMode property to the ColumnBase class. This property allows you to override the EditorButtonShowMode global setting for individual columns.

    <dxg:GridColumn FieldName="BirthDate"
                    EditorButtonShowMode="ShowAlways">
        <dxg:GridColumn.EditSettings>
            <dxe:DateEditSettings Mask="R"
                                    MaskType="DateOnly"
                                    DisplayFormat="R"/>
        </dxg:GridColumn.EditSettings>
    </dxg:GridColumn>
    

    Options include:

    • ShowOnlyInEditor - Only displays the button(s) when the cell editor is active.

      ShowOnlyInEditor - Per-Column Control of Editor Button Visibility in the WPF Data Grid

    • ShowForFocusedCell - Only displays the button(s) within the focused cell.

      ShowForFocusedCell - Per-Column Control of Editor Button Visibility in the WPF Data Grid

    • ShowForFocusedRow - Displays the button(s) for a cell in the focused row.

      ShowForFocusedRow - Per-Column Control of Editor Button Visibility in the WPF Data Grid

    • ShowAlways - Displays buttons for all cells within a column.

      ShowAlways - Per-Column Control of Editor Button Visibility in the WPF Data Grid

    Column-Level Control for Immediate Data Posting

    We added the EnableImmediatePosting property to the ColumnBase class, allowing you to control when edited values are posted to the data source at the column level.

    Previously, this behavior was only configurable at the view level (DataViewBase.EnableImmediatePosting). In v25.1, you can override the global setting per column to fine-tune data update behavior based on your preferences.

    Outlook-inspired Side Panels

    Our WPF Ribbon Control now supports side panel layouts inspired by Microsoft Outlook. With the new RibbonControl.SupportSidePanels property you can display side elements (such as an AccordionControl) to the left or right edge of your application window - or display both elements/panels simultaneously.

    Outlook-inspired Side Panels - WPF Ribbond

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
    
        <dxa:AccordionControl Grid.RowSpan="2">
                <!--Configure the AccordionControl as needed.-->
        </dxa:AccordionControl>
    
        <dxr:RibbonControl SupportSidePanels="True"
                            Grid.Column="1">
                <!--Configure the RibbonControl as needed.-->
        </dxr:RibbonControl>
    </Grid>
    

    Map Control

    Azure Maps Support

    The DevExpress WPF Map Control can now utilize Azure Maps data using the following new data providers:

    Note

    When using Azure Maps, you must read and understand Microsoft’s terms of use: https://azure.microsoft.com/en-us/pricing/details/azure-maps/

    The following demos have been updated to use new Azure Maps Data Providers. We encourage you to examine our implementation to streamline your transition to Azure Maps:

    • Gpx Data Adapter
    • Photo Gallery
    • Sales Dashboard
    • Clustering
    • Map Editor
    • Multiple Layers
    • Map Elements
    • Vector Item Binding
    • Bubble Charts
    • Coordinate Systems
    • Items Moving
    • Geo Shape Image

    Run Demo

    PDF Viewer

    Preserve Compressed Object Streams when Saving

    In previous versions, DevExpress PDF processing tools supported compressed object streams only when reading documents.

    To reduce file size when saving PDF documents, v25.1 includes a new compression engine that preserves the original/compressed state of PDF object streams. Our compression mechanism automatically applies to multiple document structures (text, PDF forms, fonts, etc) and allows you to modify and save PDF files more efficiently.

    PDF Redaction API

    v25.1 includes new APIs to create and manage PDF redaction annotations. With this capability, you can hide/remove sensitive or private content from your documents and add a colored text overlay across the redacted area.

    The redaction process includes two steps:

    • Create a redaction annotation with the desired appearance in the PDF page area (or value if you wish to hide content but retain it for other users).

    • Clear content using the annotation and apply the overlay with specified appearance settings. In this instance, all hidden content will be removed.

    Note

    Redaction is available using the PDF Facade API (DevExpress.Pdf.PdfDocumentFacade class). This class is defined in the DevExpress.Docs.v25.1.dll assembly. Add this assembly to your project or install the DevExpress.Document.Processor Nuget Package from the offline Package source to use PdfDocumentFacade members.

    You need an active license for the DevExpress Office File API Subscription or DevExpress Universal Subscription to use this class in production code.

    Create and Apply Redaction Annotations in Code

    To create a redaction annotation, you must:

    New API allows you to apply the following annotations:

    DevExpress WinForms PDF Viewer - Redaction API

    You can also use DevExpress.Pdf.PdfClearContentOptions to specify the type of the content to remove (text, graphics, images, or annotations) when you apply the redaction.

    pdfViewer.LoadDocument("Demo.pdf");
    //...
    PdfDocumentFacade documentFacade = pdfViewer.GetDocumentFacade();
    PdfRectangle pageCropBox = pdfViewer.GetPageInfo(0).CropBox;
    PdfRectangle redactBounds =
        new PdfRectangle(0, pageCropBox.Height-50, 200, pageCropBox.Height);
    
    // Add a redaction annotation at the top left corner of the first document page.
    PdfRedactAnnotationFacade redactAnnotation =
        documentFacade.Pages[0].AddRedactAnnotation(redactBounds);
    redactAnnotation.Author = "Jane Doe";
    // Setup redaction annotation appearance
    redactAnnotation.FillColor = new PdfRGBColor(0, 0, 0);
    redactAnnotation.FontColor = new PdfRGBColor(1, 1, 1);
    redactAnnotation.FontName = "Calibri";
    redactAnnotation.FontSize = 0; // enables font auto-size
    redactAnnotation.OverlayText = "Classified";
    redactAnnotation.TextJustification = PdfTextJustification.Centered;
    redactAnnotation.RepeatText = false;
    
    // Apply the redaction annotation.
    redactAnnotation.Apply();
    

    Spreadsheet Control

    OLE Objects

    The DevExpress WPF Spreadsheet Control now supports OLE objects. OLE (Object Linking and Embedding) allows you to link external files and embed data (spreadsheets, PDF files, mail messages, presentations, etc.) into your Excel documents.

    With OLE Object support, you can execute the following operations:

    • Create OLE objects with links to external files or embed data from these files in your document;

    • Obtain OLE object properties;

    • Extract OLE object data from a document;

    • Remove OLE objects from a document;

    • Print and export documents with OLE object icons to PDF/image formats;

    • Load and save documents that contain OLE objects without content loss.

    An OLE object is represented by the OleObject interface. As a unique document shape, the OLE object inherits all the settings from the base Shape interface. The shape settings define OLE object’s icon appearance, location, and internal object properties (including name, icon size, icon position in a worksheet, alt text, and etc).

    To access OLE objects in a worksheet, use the Worksheet.OleObjects collection (also available through the base Worksheet.Shapes collection). OleObjectCollection.AddLinkedOleObject and OleObjectCollection.AddEmbeddedOleObject methods allow you to create new linked or embedded OLE objects in a worksheet.

    Worksheet worksheet = spreadsheetControl.ActiveWorksheet;
    CellRange oleIconRange = worksheet.Range["B4:D6"];
    SpreadsheetImageSource oleIcon = SpreadsheetImageSource.FromFile("oleIcon.png");
    
    // Create linked OLE object.
    OleObject oleObjectLinked = worksheet.OleObjects.AddLinkedOleObject(
        oleIconRange, "package.pdf", OleObjectType.Package, oleIcon);
    
    // Create embedded OLE object from a byte array.
    byte[] sourceData = File.ReadAllBytes("package.pdf");
    OleObject oleObjectEmbedded1 = worksheet.OleObjects.AddEmbeddedOleObject(
        oleIconRange, sourceData, OleObjectType.Package, oleIcon);
    
    // Create embedded OLE object from a file stream.
    using (var stream = File.OpenRead("package.pdf")) {
        OleObject oleObjectEmbedded2 = worksheet.OleObjects.AddEmbeddedOleObject(
        oleIconRange, stream, OleObjectType.Package, oleIcon);
    }
    

    You can also extract and analyze linked and embedded data. Use the OleObject.InsertType property to determine OLE object type (linked or embedded). OleObject.AsLinkedContent and OleObject.AsEmbeddedContent methods allow you to extract additional information based on OLE object type. For linked objects, you can obtain the linked file name using the OleObjectLinkedContent.FileName property. For embedded objects, you can get raw binary content using the OleObjectEmbeddedContent.GetRawData method or save the embedded content to a file using the OleObjectEmbeddedContent.SaveAs method.

    Worksheet worksheet = spreadsheetControl.ActiveWorksheet;
    OleObject oleObject = worksheet.OleObjects[0];
    if(oleObject.InsertType == OleObjectInsertType.Linked)
    {
        OleObjectLinkedContent linkedContent = oleObject.AsLinkedContent();
        string linkedFileName = linkedContent.FileName;
    }
    if(oleObject.InsertType == OleObjectInsertType.Embedded)
    {
        OleObjectEmbeddedContent embeddedContent = oleObject.AsEmbeddedContent();
        byte[] oleRawData = embeddedContent.GetRawData();
        if (oleObject.Type == OleObjectType.AdobeAcrobatDocument)
            using (FileStream stream = new FileStream("embedded_document.pdf", FileMode.Create, FileAccess.Write))
                embeddedContent.SaveAs(stream);
    }
    

    You can also remove OLE objects from your spreadsheets. Use the OleObject.Delete, OleObjectCollection.Remove or OleObjectCollection.RemoveAt method to remove individual OLE objects, or use the OleObjectCollection.Clear method to remove all OLE objects from a worksheet.

    OleObject oleObject = worksheet.OleObjects[0];
    
    // Remove the current OLE object.
    oleObject.Delete();
    // or
    worksheet.OleObjects.Remove(oleObject);
    
    // Remove all OLE objects in the collection.
    worksheet.OleObjects.Clear();
    

    Note

    OLE object support is only available in OpenXML-based file formats (XLSX, XLSM, XLTX, and XLTM).

    See the following help topic for more information: OLE Objects in Spreadsheet Control for WPF.

    How to: Use RichEditControl for WPF to Create a Fillable PDF Form in Code

    Rich Text Editor

    Right-to-Left (RTL) Engine Enhancements

    We enhanced our Right-to-Left text rendering engine (improved text order in paragraphs, headers and footers, numbering lists, tables and shapes with bi-directional text including mixed Right-to-Left and Left-to-Right text blocks).

    Available when you generate a PDF file, image, or print output via the User Interface or code.

    CJK (Chinese, Japanese and Korean) Text Wrapping

    We’ve added CJK text wrapping and line-break rule support to the DevExpress WPF Rich Text Editor.

    New wrapping rules correctly apply line breaks between individual CJK characters (in document paragraphs, headers/footers, tables, and shapes). Documents that use CJK text wrapping rules can now be printed and exported to PDF/image formats with appropriate text layouts.

    CJK (Chinese, Japanese and Korean) Text Wrapping - WPF Rich Text Edit

    PDF Export - Convert Word Content Controls to PDF AcroForm Fields

    Our Word Document to PDF export engine supports the conversion of Word content controls to PDF AcroForm fields.

    DevExpress Word-processing tools automatically convert the following Microsoft Word content control types:

    • Plain Text

    • Rich Text

    • Picture

    • Check Box

    • Combo Box

    • Drop-Down List

    • Date Picker

    Note

    Building Block and Repeating Section controls are exported as regular text.

    Due to PDF format limitations, PDF text fields generated from Rich Text content controls use formatting from the first word of the original Rich Text content control.

    Rich Text content controls that split pages or contain complex objects (like tables) are exported as regular text.

    To enable this capability, you must:

    You can also activate this capability via the Print Preview -> PDF Export Options dialog.

    using DevExpress.XtraPrinting;
    using DevExpress.XtraRichEdit;
    
    richEditControl.LoadDocument("input_content_controls.docx");
    PdfExportOptions options = new PdfExportOptions();
    options.ExportEditingFieldsToAcroForms = true;
    richEditControl.ExportToPdf("output_with_acroform.pdf", options);
    

    PDF Export - Convert Word Content Controls to PDF AcroForm Fields

    Compare Word Documents

    v25.1 includes new APIs designed to compare two Word documents programmatically. With our new CompareDocumentExtensions.Compare extension method you can:

    • Identify changes between two versions and generate document output with revisions.

    • Compare both document text and formatting (including case-sensitivity).

    • Compare content within document headers, footers and textboxes.

    • Setup author/date of output revisions.

    • Compare content at the word or character level.

    • Return the document along with revisions as a new Document instance for further processing (or automatically replace an input document with revised content).

    Note

    Input documents must not include document revisions. Otherwise, the Compare method throws an exception.

    richEditControl.LoadDocument("FirstLook_original.docx");
    Document originalDocument = richEditControl.Document;
    
    RichEditDocumentServer wordProcessor = new RichEditDocumentServer();
    wordProcessor.LoadDocument("FirstLook_revised.docx");
    Document revisedDocument = wordProcessor.Document;
    
    Document docWithRevisions = originalDocument.Compare(revisedDocument, 
        new CompareDocumentOptions() {
        Author = "Jane Doe",
        DateTime = DateTime.Now,
        ComparisonLevel = ComparisonLevel.Word,
        CompareCaseChanges = false,
        CompareFormatting = true,
        CompareHeadersAndFooters = true,
        CompareTextBoxes = true
    }, ComparisonTargetType.Original);
    

    Note

    The CompareDocumentExtensions.Compare extension method is defined in the DevExpress.Docs.v25.1.dll assembly. Add this assembly to your project or install the DevExpress.Document.Processor NuGet Package from the offline Package source to use our CompareDocumentExtensions.Compare method.

    IMPORTANT

    You need an active DevExpress Office File API Subscription or DevExpress Universal Subscription to use this class in production code.

    Download 30-Day Trial

    With numerous new products and dozens of high-impact features, DevExpress UI components allow you to build your best, without limits or compromise. Download our fully-functional 30-day trial today and experience the DevExpress difference today.

    Download: Free 30-day Trial

    Tip

    Your Feedback Matters! Take part in the survey on our website: WPF Survey.