# Product Architecture

> How WPF.TextControl finds its ribbon tabs, bars and sidebar by name in XAML, where ServerTextControl and MailMerge fit, and which assemblies form the engine.

- **Product:** TX Text Control .NET for WPF
- **Section:** Documentation
- **Kind:** Topic
- **Path:** TX Text Control .NET for WPF > Overview > Product Architecture
- **1147 words**
- **Web URL:** https://docs.textcontrol.com/tx-text-control-dotnet-wpf/overview/architecture/
- **LLMs URL:** https://docs.textcontrol.com/tx-text-control-dotnet-wpf/overview/architecture/llms.txt
- **LLMs-Full URL:** https://docs.textcontrol.com/tx-text-control-dotnet-wpf/overview/architecture/llms-full.txt

---

Knowing how the parts of TX Text Control .NET for WPF connect tells you what to declare in XAML, what to set in code and which files your application ships. At the center of every window is a `TextControl`; ribbon tabs, bars and sidebars are separate elements that refer to it by name; `ServerTextControl` and `MailMerge` work in code; and one document engine does the work for all of them.

### Architecture at a Glance

The parts fall into three layers:

- **The editor and its user interface.** `TextControl` displays and edits the document. The ribbon tabs, the button bar, the ruler bars, the status bar and the sidebar are WPF controls of their own that show and change the state of the editor they are connected to.
- **The classes without a user interface.** `ServerTextControl` processes documents in code, and `MailMerge` merges data into templates, in the editor or on their own.
- **The document engine.** .NET assemblies and native Windows libraries load, format, render, print and save the documents for all of them.

A typical window arranges the controls in a `DockPanel`, with the editor as the last child so that it fills the remaining space:

```text
Window (DockPanel)
+--------------------------------------------------------------+
| Ribbon (Microsoft) hosting RibbonFormattingTab, ...          |
+---------+------------------------------------+---------------+
|         | RulerBar                           |               |
| Vertical|------------------------------------|   Sidebar     |
| RulerBar| TextControl                        |               |
|         |                                    |               |
+---------+------------------------------------+---------------+
| StatusBar                                                    |
+--------------------------------------------------------------+

TextControl.RulerBar = "rulerBar1"   (connections are names)
MailMerge.TextComponent --> TextControl or ServerTextControl

TX Text Control engine: .NET assemblies + native libraries (win-x64, win-x86)
```

### How the Editor Finds Its Bars

`TextControl`, `ButtonBar`, `RulerBar`, `StatusBar`, `Sidebar` and the ribbon tabs are WPF controls of their own, and a bar does nothing until the editor names it. The connecting properties, such as [RulerBar](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/rulerbar-property/llms-full.txt) of the `TextControl`, are strings that hold the `Name` of an element in the same window, so the connections are written in XAML. A sidebar points the other way and names its editor, and a ribbon tab names the sidebars its buttons open. [Connections Are Names](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/integration/xaml/#connections-are-names) lists every connecting property with a complete window.

TX Text Control provides the twelve ribbon tabs, not the ribbon itself: the tabs are placed in the `Ribbon` of Microsoft's *System.Windows.Controls.Ribbon* assembly. [Ribbon Tabs, Toolbars, Rulers, and Status Bar](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/overview/components/ribbon-toolbars/llms-full.txt) and [Sidebar](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/overview/components/sidebar/llms-full.txt) introduce the controls around the editor.

### ServerTextControl and MailMerge

- **[ServerTextControl](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/overview/components/servertextcontrol/llms-full.txt)** is a `System.ComponentModel.Component`, not a WPF element. It has the document interface of `TextControl` without anything on screen, and your code creates it, initializes it with `Create` and disposes it.
- **[MailMerge](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/overview/components/mailmerge/llms-full.txt)** merges data into templates. It is connected through its `TextComponent` property, this time with an object, not a name: to the editor, which then shows the merged result, or to a `ServerTextControl`, which creates documents in the background.

### The Document Engine

All parts use the same engine, made of .NET assemblies and native Windows libraries. *TXTextControl.WPF.dll* contains the WPF controls, and the other assemblies hold the document model, `ServerTextControl`, mail merge, barcodes, drawings, PDF and images; [Assemblies and XAML Namespaces](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/xaml-namespaces/#the-assemblies) lists them. The native libraries format and render the documents and read and write the file formats. They exist for 32-bit and for 64-bit processes, and each process loads the set of its own bitness, as [32-bit and 64-bit Applications](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/requirements/32-bit-64-bit/llms-full.txt) explains. [Managed Assemblies and Native Libraries](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/deployment/assemblies/llms-full.txt) lists what your application deploys.

The engine formats the document with the text dimensions of a printer, so that the screen and the printout match; [Formatting With a Printer](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/document-editor/architecture/#formatting-with-a-printer) explains the setting. The editor also brings its own dialog boxes, described in [Built-in Dialog Boxes](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/document-editor/ribbon-ui/dialog-boxes/llms-full.txt), and prints through WPF printing, as [Printing and Print Preview](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/document-editor/printing/llms-full.txt) shows.

### Next Steps

- [Components](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/overview/components/llms-full.txt): each control and class with its key members.
- [Supported Platforms](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/overview/platforms/llms-full.txt): the .NET and Windows versions and the processor architectures.
- [Create a WPF Ribbon Application](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/getting-started/document-editor/ribbon/llms-full.txt): put the ribbon tabs, the rulers, the status bar and a sidebar into a window.
- [Deployment Guide](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/deployment/llms-full.txt): the files your application ships and how to publish it.

---

## Nearby

- **Previous:** [Introduction](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/overview/introduction/llms-full.txt)
- **Next:** [Components](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/overview/components/llms-full.txt)
