Есть простейший юзерконтрол. На нем я размещаю другой простейший контрол:
<HeaderedContentControl Grid.Column="0" Header="Содержание" Content="{Binding Content}" Style="{StaticResource Styles.Document.HeaderedContent}" />
Где объектом для биндинга в дизайнере выступает такая штука:
<UserControl x:Class="Namespace.DocumentView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:s="clr-namespace:Namespace"
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="700" d:DataContext="{x:Static s:DummyDocumentInfoSource.Source}" >
Соответсвтенно, Source выдает мне инстанс класса DummyDocumentInfo, к которому можно биндиться и видеть все в дизайнере VS2010 наживую.
Есть стиль к нему
<Style x:Key="Styles.Document.HeaderedContent" TargetType="{x:Type HeaderedContentControl}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Margin="7,0,0,2" FontSize="16" FontWeight="SemiBold" Text="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBox Text="{Binding}" Style="{StaticResource Styles.Document.ContentTextBox}" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type HeaderedContentControl}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ContentPresenter Grid.Row="0" ContentSource="Header" />
<ContentPresenter Grid.Row="1" ContentSource="Content" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Если в этом стиле в ContentTemplate в TextBox.Text вместо {Binding} передать текст — дизайнер работает. Как только туда ставишь {Binding} — моментально отваливается дизайнер с ошибкой:
System.Windows.Markup.XamlParseException
Two-way binding requires Path or XPath.
И жутким стектрейсом.
Шаблон для HeaderedContentControl писал по MSDN, собственно, он примерно такой же там и есть.
Где проблема? Куда смотреть?