我有一个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
属性的绑定)?
或者我是否需要寻找模板或自定义控件?
答案 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