2016-08-24 7 views
0

Я, похоже, немного ржавый на привязке шаблонов, я просто не могу заставить это работать. Вы видите, что случилось?Как сделать правильную привязку к шаблону?

У меня есть пользовательский элемент управления, как это:

public class TextPropertyRow : HeaderedContentControl 
{ 
} 

С стиля и управления шаблон:

<Style TargetType="{x:Type Framework:TextPropertyRow}"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type Framework:TextPropertyRow}"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="20" /> 
      <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
      <ContentPresenter ContentSource="Header" /> 
      <TextBox Text="{TemplateBinding Content}" Grid.Column="2" /> 
     </Grid> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

Что я использую, как это:

<Framework:TextPropertyRow Header="Value" 
    Content="{Binding PublicStringPropertyOnDataContext}" /> 

Но значения, введенные в текстовое поле, не будут вводиться в файл viewmodel datacontext. Это не правильный способ сделать это?

+0

TemplateBinding не может быть TwoWay. –

ответ

0

В тех случаях, когда значение в обоих направлениях во время выполнения, вы хотите сделать обычный Binding с RelativeSource TemplatedParent

<TextBox 
    Text="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}" 
    Grid.Column="2" 
    /> 
+0

О, мужчина, забыл об этом. Мне нравится XAML, но WPF раздражает =) –

+0

@AndreasZita Да, я получаю меня каждую неделю или две. –