仍可以编辑将IsReadOnly属性设置为true的WPF TextBox

时间:2013-04-18 18:26:27

标签: wpf .net-3.5

我正在使用TextBox,由于某些原因,它需要是只读的。 我不会在这里争论原因。我知道我可以使用TextBlock或Label来显示不可编辑的内容,但不幸的是,有TextBox。

<TextBox IsReadOnly="True" Text="{Binding totalAmount, Mode=OneWay, StringFormat={}{0:C2}}" TextAlignment="Right" />

是否有人知道它是否存在已知问题? 我正在使用WPF 3.5

2 个答案:

答案 0 :(得分:1)

为什么不使用Textblock?

<TextBlock Text="{Binding totalAmount, Mode=OneWay, StringFormat={}{0:C2}}" TextAlignment="Right"/>

答案 1 :(得分:1)

使用TextBlock不是答案,因为它是一个完全不同的控件。 IsReadOnly是TextBox的一个非常有用的状态,它可以通过数据绑定切换为true / false。根据MSDN,如果文本框是只读的,则不允许用户输入或编辑,但可以进行编程更改。用户仍然可以选择文本,光标仍然会出现。它也不会像被禁用时那样变灰。

要回答这个问题,TextBox未显示为ReadOnly的最可能原因是因为有一种样式会覆盖该行为。请在代码中搜索可能隐式应用于所有TextBox类型的任何样式:

<Style TargetType="{x:Type TextBlock}">
    ...
</Style>

您也可以尝试指定自己的显式空白样式并查看是否有帮助

<TextBox>
    <TextBox.Style>
        <Style TargetType="TextBox" />
    </TextBox.Style>
</TextBox>