0

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

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

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

4

2 回答 2

1

为什么不使用文本块?

<TextBlock Text="{Binding totalAmount, Mode=OneWay, StringFormat={}{0:C2}}" TextAlignment="Right"/>
于 2013-04-18T18:28:33.660 回答
1

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

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

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

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

<TextBox>
    <TextBox.Style>
        <Style TargetType="TextBox" />
    </TextBox.Style>
</TextBox>
于 2017-12-11T20:52:34.573 回答