我在窗口上有一个文本框,显示货币值。文本框将itReadOnly属性绑定到datacontext上的属性。如果文本框处于只读模式,我想将其中的文本格式化为货币值,千位分隔符使用£符号和逗号,但如果它处于编辑模式,我希望它是一个直接数字。
StringFormat属性似乎不是一个选项,因为它是无条件的。 Converter属性似乎是一个有希望的候选者,但我需要将IsReadOnly属性作为ConverterParameter传递,并且ConvereterParameter似乎不想被绑定。
解决这个问题的正确方法是什么?
答案 0 :(得分:2)
您可以根据触发更改TextBox.Text
绑定,在这种情况下IsReadOnly=True
使用StringFormat
<TextBox ...>
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Text" Value="{Binding Path=MyDecimal}"/>
<Style.Triggers>
<Trigger Property="IsReadOnly" Value="True">
<Setter Property="Text" Value="{Binding Path=MyDecimal, StringFormat=C2}"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>