8

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

我想在 XAML/Designer 中设置绑定,但我想避免在每个单独的绑定上设置 TextFormat 属性。有没有办法使用样式来做到这一点?

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

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

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

有没有办法使用样式仅设置/修改StringFormat单个绑定中的属性(即属性的绑定)?Text

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

4

1 回答 1

7

您可能会绑定文本框的 DataContext 而不是 text 属性

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

然后使用像

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

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

于 2014-07-04T11:35:20.117 回答