通过样式设置WPF绑定.TextBox的StringFormat属性

8
我有一个WPF应用程序,包含许多不同类型的绑定的 TextBox ,它们都共享相同的 StringFormat 属性(它是一个技术应用程序,文本框应该显示带单位的值“ xxx mm”…)
我想在XAML / Designer中设置绑定,但我想避免在每个单独的绑定上设置TextFormat属性。是否有一种使用样式来做到这一点的方法?
如果我尝试在Text属性的 Setter 中设置绑定,如下所示:
    <Style x:Name="mmtext" TargetType="TextBox" x:Key="mmtext">
        <Setter Property="Text" Value="{Binding Path=A,StringFormat={}{0} mm}" />
    </Style>

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

有没有一种方式可以使用样式设置/修改单个绑定(即Text属性的绑定)中的StringFormat属性?

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


我不知道有基于样式的解决方案。那么转换器呢?当然,你仍然需要在每个控件的绑定中指定转换器,所以你并没有减少编写XAML的数量,但至少格式逻辑在一个地方,如果你需要在整个应用程序中进行更改。 - Andrew Stephens
1个回答

7
您可以将文本框的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>

为了实现双向绑定,您无论如何都需要使用转换器来去除额外的 MMS。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接