# What's New in TX Text Control .NET for WPF 22.0

> TX Text Control .NET for WPF 22.0 (X12): controls based on Control, a ToolBar button bar, RibbonFormattingTab and RibbonInsertTab, link and bookmark dialogs.

- **Product:** TX Text Control .NET for WPF
- **Section:** Documentation
- **Kind:** Topic
- **Path:** TX Text Control .NET for WPF > What's New > Older Versions > What's New in TX Text Control .NET for WPF 22.0
- **2592 words**
- **Web URL:** https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/older-versions/2200/
- **LLMs URL:** https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/older-versions/2200/llms.txt
- **LLMs-Full URL:** https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/older-versions/2200/llms-full.txt

---

Version 22.0 rebuilt the WPF controls of TX Text Control on the classes of the WPF framework. The `TextControl` became a templated control, the button bar a WPF toolbar, and two ribbon tabs and four dialog boxes for links, bookmarks and navigation were added. For documents, the version switched image handling to the Windows Imaging Component and added JavaScript actions to PDF documents.

Version 22.0 was released in April 2015 as TX Text Control X12, together with TX Spell .NET 6.0, as the blog article [TX Text Control X12 and TX Spell 6.0 Released](https://www.textcontrol.com/blog/2015/04/15/tx-text-control-x12-and-tx-spell-60-released/) announced. Its changes to the HTML5 Web Editor, an ASP.NET control of TX Text Control .NET Server, aren't part of TX Text Control .NET for WPF and aren't listed here.

### Version 22.0 at a Glance

| Area | What is new |
|---|---|
| WPF controls | Controls derived from `System.Windows.Controls.Control`, with templates that other elements can overlap |
| Button bar | A `ToolBar` with its buttons and combo boxes as items |
| Ribbon | Ribbon tabs for formatting and for inserting objects |
| Dialog boxes | Hyperlinks, bookmarks, deleting bookmarks, going to a position, text and background color |
| Images | Loading and saving with the Windows Imaging Component, TIF and GIF export |
| PDF | Document-level JavaScript actions |
| Text positions | Input position markers, scrolling to the input position, headers and footers of a page |

### WPF Control Presentation

The WPF controls of TX Text Control derive from `System.Windows.Controls.Control` instead of `System.Windows.FrameworkElement`. A [WPF.TextControl](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/llms-full.txt) is a sealed template of other WPF controls, which fits it into the WPF framework: other elements of a window can overlap the `TextControl` or a toolbar of TX Text Control.

- **Document.** A [WPF.TextControlDocument](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontroldocument/llms-full.txt) object is the part of the `TextControl` template that represents the document. See [TextControlDocument](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/integration/data-binding/textcontroldocument/llms-full.txt).
- **Toolbars.** [WPF.TextControlToolBar](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontroltoolbar/llms-full.txt) is the base class of `WPF.RulerBar` and `WPF.StatusBar`, and a [WPF.TextControlToolBarPresenter](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontroltoolbarpresenter/llms-full.txt) is part of its template.

### Button Bar

[WPF.ButtonBar](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/buttonbar/llms-full.txt) derives from `System.Windows.Controls.ToolBar`:

- **Items.** Its default buttons and combo boxes are the items of its `Items` property. Code can sort, delete and move them and add new ones; at design time, the collection editor does the same.
- **Toolbar trays.** A button bar can be placed in a `System.Windows.Controls.ToolBarTray`.
- **Frame.** The frame of the button bar is designed with the `BorderBrush` and `BorderThickness` properties it inherits.

[Toolbars and Mini Toolbars](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/document-editor/ribbon-ui/toolbars/llms-full.txt) covers the toolbars of the current version.

### Ribbon Tabs

Two ribbon tabs derived from `System.Windows.Controls.Ribbon.RibbonTab` can be hosted in a `System.Windows.Controls.Ribbon.Ribbon`:

- **Formatting.** [WPF.RibbonFormattingTab](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/ribbonformattingtab/llms-full.txt) sets font and paragraph attributes and formatting styles and handles the clipboard.
- **Insert.** [WPF.RibbonInsertTab](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/ribboninserttab/llms-full.txt) inserts pages, images, hyperlinks, bookmarks, headers and footers, text frames and symbols.

The properties [RibbonFormattingTab](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/ribbonformattingtab-property/llms-full.txt) and [RibbonInsertTab](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/ribboninserttab-property/llms-full.txt) of the `TextControl` take the name of the tab to connect. [Built-in Ribbon Tabs](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/document-editor/ribbon-ui/ribbon/llms-full.txt) lists all tabs of the current version.

### Dialog Boxes

- **Hyperlinks.** [WPF.HyperlinkDialog](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/hyperlinkdialog/llms-full.txt) inserts a `HypertextLink` to an external location or a `DocumentLink` to a place in the same document. When the input position is on a link, the dialog box shows its data, which can be changed, or deletes the link.
- **Bookmarks.** [WPF.BookmarkDialog](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/bookmarkdialog/llms-full.txt) inserts a bookmark, a `DocumentTarget`, at the input position, or shows and renames the bookmark that is there. [WPF.DeleteBookmarksDialog](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/deletebookmarksdialog/llms-full.txt) lists all bookmarks of the document, moves to one or deletes one or more of them.
- **Go to.** [WPF.GotoDialog](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/gotodialog/llms-full.txt) moves the input position to a page, section, line, table or bookmark and marks the new position.
- **Colors.** [ForeColorDialog](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/forecolordialog-method/llms-full.txt) and [TextBackColorDialog](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/textbackcolordialog-method/llms-full.txt) of the `TextControl` open the dialog boxes for the text color and the background color of the text.

See [Built-in Dialog Boxes](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/document-editor/ribbon-ui/dialog-boxes/llms-full.txt).

### Document Processing

- **Images.** TX Text Control loads and saves images with the Windows Imaging Component (WIC). Images can also be exported as TIF and GIF, selected with [Image.ExportFilterIndex](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/image/exportfilterindex-property/llms-full.txt) for one image or [SaveSettings.ImageExportFilterIndex](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/savesettings/imageexportfilterindex-property/llms-full.txt) for all images of a document.
- **JavaScript in PDF documents.** [SaveSettings.DocumentLevelJavaScriptActions](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/savesettings/documentleveljavascriptactions-property/llms-full.txt) takes an array of scripts that are embedded at document level and run when the PDF document is opened. PDF/A documents don't get them. See [PDF Creation and Conversion](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/pdf/creation-conversion/llms-full.txt).
- **Input position.** [InputPosition.InactiveMarker](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/inputposition/inactivemarker-property/llms-full.txt) shows a marker at the input position while the control is inactive and the caret isn't visible, and [InputPosition.ScrollTo](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/inputposition/scrollto-method/llms-full.txt) scrolls the input position into view. [TextField.ContainsInputPosition](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/textfield/containsinputposition-property/llms-full.txt) and [DocumentTarget.ContainsInputPosition](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/documenttarget/containsinputposition-property/llms-full.txt) tell whether a field or a target is at the input position.
- **Headers and footers of a page.** [Page.Header](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/page/header-property/llms-full.txt) and [Page.Footer](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/page/footer-property/llms-full.txt) return the header and the footer of a page, or `null` if the page has none. See [Sections, Pages, Headers, and Footers](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/document-processing/sections-headers/llms-full.txt).

### Upgrade to Version 22.0

- **Button bar layout.** `ButtonPositions`, `ButtonOffsets` and `ButtonSeparators` of `WPF.ButtonBar` are replaced by the `Items` property.
- **Button bar frame.** `ButtonBar.BorderStyle` is replaced by the inherited `BorderBrush` and `BorderThickness` properties.
- **Button bar styles.** `ButtonBar.ButtonStyle` and `ButtonBar.DisplayColors` are removed. The default items of the button bar are WPF controls, styled with `System.Windows.Style` objects.
- **Mouse position.** `WPF.TextControl.MousePosition` is removed. Take the position from the `MouseEventArgs` of the `MouseMove` routed event of the `TextControl`, or call `Mouse.GetPosition`.
- **Loaded event.** A `WPF.TextControl` is ready when its own `Loaded` event occurs. Code that works with the `TextControl` in the `Loaded` event of the window has to move to the event of the control. See [Control Initialization and Document Access](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/integration/initialization/llms-full.txt).

### New Classes, Properties, Methods and Events

The classes and members below are the ones that the What's New documentation of version 22.0 lists for TX Text Control .NET for WPF. Names are relative to the `TXTextControl` namespace, each name links to its current reference page, and "(obsolete)" marks a member that is obsolete today.

#### New Classes

- [WPF.BookmarkDialog](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/bookmarkdialog/llms-full.txt)
- [WPF.DeleteBookmarksDialog](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/deletebookmarksdialog/llms-full.txt)
- [WPF.GotoDialog](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/gotodialog/llms-full.txt)
- [WPF.HyperlinkDialog](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/hyperlinkdialog/llms-full.txt)
- [WPF.RibbonFormattingTab](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/ribbonformattingtab/llms-full.txt)
- [WPF.RibbonInsertTab](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/ribboninserttab/llms-full.txt)
- [WPF.TextControlDocument](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontroldocument/llms-full.txt)
- [WPF.TextControlToolBar](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontroltoolbar/llms-full.txt)
- [WPF.TextControlToolBarPresenter](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontroltoolbarpresenter/llms-full.txt)

#### Members by Class

| Class | Properties | Methods | Events |
|---|---|---|---|
| [DocumentTarget](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/documenttarget/llms-full.txt) | [ContainsInputPosition](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/documenttarget/containsinputposition-property/llms-full.txt) |  |  |
| [InputPosition](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/inputposition/llms-full.txt) | [InactiveMarker](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/inputposition/inactivemarker-property/llms-full.txt) | [ScrollTo](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/inputposition/scrollto-method/llms-full.txt) |  |
| [Page](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/page/llms-full.txt) | [Footer](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/page/footer-property/llms-full.txt), [Header](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/page/header-property/llms-full.txt) |  |  |
| [SaveSettings](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/savesettings/llms-full.txt) | [DocumentLevelJavaScriptActions](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/savesettings/documentleveljavascriptactions-property/llms-full.txt) |  |  |
| [TextField](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/textfield/llms-full.txt) | [ContainsInputPosition](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/textfield/containsinputposition-property/llms-full.txt) |  |  |
| [WPF.TextControl](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/llms-full.txt) | [RibbonFormattingTab](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/ribbonformattingtab-property/llms-full.txt), [RibbonInsertTab](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/ribboninserttab-property/llms-full.txt) | [ForeColorDialog](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/forecolordialog-method/llms-full.txt), [TextBackColorDialog](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/textbackcolordialog-method/llms-full.txt) |  |

### Next Steps

- [Version 23.0](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/older-versions/2300/llms-full.txt): the features of the next version.
- [Version 21.0](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/older-versions/2100/llms-full.txt): automatic language detection, content control adapters and version information.
- [Built-in Ribbon Tabs](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/document-editor/ribbon-ui/ribbon/llms-full.txt): the ribbon tabs of the current version.

---

## Nearby

- **Previous:** [What's New in TX Text Control .NET for WPF 23.0](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/older-versions/2300/llms-full.txt)
- **Next:** [What's New in TX Text Control .NET for WPF 21.0](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/older-versions/2100/llms-full.txt)
