Обновление источника с TemplateBinding - PullRequest
8 голосов
/ 12 мая 2010

Я использую этот стиль для всех моих ярлыков

    <Style TargetType="Label" x:Key="LabelStyle">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Label">
                    <StackPanel Orientation="Horizontal"  >
                        <TextBox Loaded="MyTextBlock_Loaded" x:Name="EditControl" Visibility="Collapsed" Text="{TemplateBinding Tag}" />
                        <Label Content="{TemplateBinding Content}" Grid.Column="1" Grid.Row="1">
                        </Label>
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

и моего образца ярлыка

<Label Grid.Column="0" Grid.Row="0" Content="Photo" Style="{StaticResource LabelStyle}" Tag="{Binding fieldsCode.firstName, UpdateSourceTrigger=PropertyChanged}"/>

Но я чувствую, что TemplateBiding не поддерживает обновление свойства.Как можно решить эту проблему

Ответы [ 2 ]

27 голосов
/ 12 мая 2010

Попробуйте это для двусторонней привязки

Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Tag, Mode=TwoWay}"
1 голос
/ 12 мая 2010

Если вы хотите одностороннюю привязку из ControlTemplate к свойству своего шаблонного родителя, используйте {TemplateBinding}. Для всех других сценариев используйте вместо этого {Binding}:

<TextBox Loaded="MyTextBlock_Loaded" x:Name="EditControl" Visibility="Collapsed" Text="{Binding Tag, Mode=TwoWay}" />

...