Пример использования multibinding:


<wpf:DataGridTextColumn IsReadOnly="True" Header="ФИО">
    <wpf:DataGridTextColumn.Binding>
      <MultiBinding StringFormat="{}{0} {1} {2}">
        <Binding Path="Surname" />
        <Binding Path="Name"/>
        <Binding Path="Patronymic"/>
      </MultiBinding>
    </wpf:DataGridTextColumn.Binding>
</wpf:DataGridTextColumn>

Ссылка с различными форматами строк:
Msdn
Ссылка с информацией по Binding.StringFormat:
Msdn
Вообще, в сети довольно много примеров на эту тему:
Stackoverflow

<TextBlock Name="TextBlockEntryDT" Text="{Binding ElementName=Widow, Path=Request.Date, StringFormat={}{0:Дата: dd.MM.yy HH:mm:ss}}"/>

В ресурсы добавляем данные об enum:


<ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="Gender">
  <ObjectDataProvider.MethodParameters>
    <x:Type TypeName="self:Gender"/>
  </ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</code>

Далее используем его в коде:


<Style TargetType="{x:Type TextBlock}">
<Setter Property="Text" Value="Н/д"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Gender}" Value="{x:Static Member=self:Gender.Male}">
<Setter Property="Text" Value="Муж"/>
</DataTrigger>
<DataTrigger Binding="{Binding Gender}" Value="{x:Static Member=self:Gender.Female}">
<Setter Property="Text" Value="Жен"/>
</DataTrigger>
</Style.Triggers>
</Style>

Приложение состоит из основного окна с TabControl и плагинов, каждый из которых помещается на TabItems данного контрола. У каждого плагина есть набор горячих клавиш. Для того, чтобы горячие клавиши работали, плагин должен быть в фокусе. К сожалению, простое переключение вкладок не решает проблему. Что с этим можно сделать? Я повесила на TabControl обработчик события SelectionChanged, в который добавила следующий код:


TabItem item = GlobalContainer.SelectedItem as TabItem;
    if (item == null)
        return;
    if(item.Content != null)
    {
        UIElement element = (item.Content as UIElement);
        Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Input,
        (System.Threading.ThreadStart)delegate
        {
            element.Focus();
        });
    }

Где нашла – сейчас не могу вспомнить, видимо, где-то на StackOverflow. Там еще было написано, что имеет смысл поиграть с приоритетом потока, но у меня работает и так.