XAML data binding with TX Text Control .NET for WPF

One of the major motivations to port Windows Forms applications to WPF is WPF's powerful data binding capabilities using XAML. Using TX Text Control .NET for WPF, interface controls like buttons or dropdown menus of a Ribbon bar can be easily connected to TX Text Control without writing one line of C# or VB.NET code. The connection can be completely done in XAML, making such bindings quick, flexible and easy.

To implement WPF data binding, a target and a source is required. The target can be any public property or element which is derived from DependencyProperty. The source of a WPF binding can be any property or other objects.

An example:

A ToggleButton should visualize, whether the character formatting at the current input position is bold or not and it should change this state when the button is clicked. In this case, the target of the data binding is the IsChecked property of the ToggleButton. The source is the Bold property of the new TX Text Control WPF.InputFormat class. This class represents all formatting attributes at the current text input position. The properties of this class are updated automatically when the input position changes.

The following XAML code shows the ToggleButton and it's binding:

<ToggleButton Name="tbtnBold" Content="Bold" Focusable="False"
              IsChecked="{Binding 
                ElementName=textControl1, 
                Path=InputFormat.Bold, Mode=TwoWay}" /> 

The Mode attribute has been set to TwoWay in the Binding statement. This attribute specifies how the data flows between the source and the target. The following methods are available:

In this sample, a textual ToggleButton is used and text can be changed when the button is checked. Also for this action we do not need any code behind and it can be done directly in XAML. A Trigger can be used to listen to the IsChecked property in order to change the text accordingly. If you bind the Value of the Content property, it must not be set as a parameter in the ToggleButton element directly:

<ToggleButton Name="tbtnBold" Focusable="False" 
              IsChecked="{Binding 
                ElementName=textControl1, 
                Path=InputFormat.Bold, Mode=TwoWay}"> 


    <ToggleButton.Style> 
        <Style TargetType="{x:Type ToggleButton}"> 
            <Setter Property="Content" Value="Bold"/> 
            <Style.Triggers> 
                <Trigger Property="IsChecked" Value="True"> 
                    <Setter Property="Content" Value="UnBold"/> 
                </Trigger> 
            </Style.Triggers> 
        </Style> 
    </ToggleButton.Style> 


</ToggleButton>