如何使用 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 上使用转换器?
如何在 UWP XAML 上将样式触发器设置为路径绑定父状态