如何在xaml中使用应用样式实现双向数据绑定?

时间:2013-03-28 09:45:59

标签: xaml windows-8 blend

我的page.xaml中有一些代码

<TextBox x:Name="NameTextField" Grid.ColumnSpan="7" Grid.Column="1" Text="{Binding Name, Mode=TwoWay}" Style="{StaticResource TextBoxStyle}" />

它指的是这种风格:

      <Style x:Key="TextBoxStyle" TargetType="TextBox">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="TextBox">
                <Grid x:Name="grid" Height="55" Background="White">
                    <Rectangle Stroke="#FFD9D9D9" StrokeThickness="6"/>
                    <ContentPresenter x:Name="contentPresenterText" VerticalAlignment="Center" Margin="6,0" Height="42" >
                        <TextBox Text="{TemplateBinding Text}" FontSize="21.333" FontFamily="Arial" FontWeight="Bold"/>
                    </ContentPresenter>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
  </Style>

当从绑定中预先填充数据但在输入数据时似乎没有其他方式工作时,这种方法正常。

这里有什么显而易见的东西吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

尝试更改:

<TextBox Text="{TemplateBinding Text}" FontSize="21.333" FontFamily="Arial" FontWeight="Bold"/>

为:

<TextBox Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=Text}" FontSize="21.333" FontFamily="Arial" FontWeight="Bold"/>

TemplateBinding似乎默认为单向绑定。