通过Style在TextBox上设置WPF Binding.StringFormat属性

时间:2014-07-04 07:39:12

标签: wpf data-binding wpf-style

我有一个WPF应用程序包含许多TextBox es,它们具有不同类型的Bindings,它们共享相同的StringFormat属性(它是一个技术应用程序,Textboxes应该显示单位为“xxx mm”的值)。 ..)

我想在XAML / Designer中设置Binding,但我想避免在每个Binding上设置TextFormat属性。有没有办法使用样式?

如果我尝试在Setter中为Text属性设置绑定,例如

    <Style x:Name="mmtext" TargetType="TextBox" x:Key="mmtext">
        <Setter Property="Text" Value="{Binding Path=A,StringFormat={}{0} mm}" />
    </Style>

我需要在Setters Value属性中提供Path,我无法在XAML本身中定义任何绑定(因为这会覆盖Style中设置的值)。

有没有办法在一个Binding中设置/修改StringFormat属性(即Text属性的绑定)?

或者我是否需要寻找模板或自定义控件?

1 个答案:

答案 0 :(得分:3)

你可能绑定文本框的DataContext而不是文本属性

 <TextBox DataContext="{Binding Path=A}" />

然后使用像

这样的setter
<Style x:Name="mmtext" TargetType="TextBox" x:Key="mmtext">
    <Setter Property="Text" Value="{Binding Path=., StringFormat={}{0} mm}" />
</Style>

对于TwoWay绑定,无论如何都需要一个转换器来摆脱额外的mms