如何使用 xaml 中的应用样式实现 2 路数据绑定?

Posted

技术标签:

【中文标题】如何使用 xaml 中的应用样式实现 2 路数据绑定?【英文标题】:How do I achieve a 2 -way data bind with an applied style in xaml? 【发布时间】:2013-03-28 09:45:59 【问题描述】:

我的 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】:

尝试改变:

<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 似乎默认为单向绑定。

【讨论】:

以上是关于如何使用 xaml 中的应用样式实现 2 路数据绑定?的主要内容,如果未能解决你的问题,请参考以下文章

如何为多个文本框使用一个绑定来分隔 WPF XAML 中的三位数字?

是否可以在 XAML 中的 TemplateBinding 上使用转换器?

如何使用来自不同 xaml 文件的样式

如何在 UWP XAML 上将样式触发器设置为路径绑定父状态

如何在.cs中统一动态修改xaml中style资源定义的样式

如何将功能按钮添加到 UWP XAML 中的列表框项