2013-04-18 73 views
0

我正在使用TextBox,並且由於某些原因它需要爲只讀。 我不會在這裏爭論原因。我知道我可以使用TextBlock或Label來顯示不可編輯的內容,但在這種情況下,不幸的是,有TextBox。將IsReadOnly屬性設置爲true的WPF文本框仍然可以編輯

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

有人知道是否有一個已知的問題嗎? 我正在使用WPF 3.5

+0

我設置文本框IsReadOnly =是真的,它是隻讀的。與你的完全一樣。你可能有一些後面的代碼來改變它。 – Dilshod

+0

我想過了,但奇怪的是,沒有任何名稱和樣式可以改變任何東西......但是你說得對,有可能是因爲如果我在MainWindow上創建一個僅帶有文本框的示例項目,它就是實際上只讀。 – JCorriveau

+0

你能分享一些更多的XAML代碼嗎? – Dilshod

回答

1

爲什麼不使用Textblock?

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

使用TextBlock不是答案,因爲它是完全不同的控件。 IsReadOnly是TextBox的一個非常有用的狀態,它可以通過數據綁定來切換真/假。根據MSDN,如果文本框是隻讀的,則不允許用戶輸入或編輯,但可以進行編程更改。用戶仍然可以選擇文本,並且光標仍然顯示。它也不會像禁用時那樣變灰。

要回答這個問題,爲什麼您的TextBox不顯示爲ReadOnly的最可能原因是因爲有一個樣式覆蓋了該行爲。請搜索您的代碼,這可能會被隱式適用於所有文本框類型的任何風格:

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

您也可以嘗試指定自己明確的空白風格,看看是否有幫助

<TextBox> 
    <TextBox.Style> 
     <Style TargetType="TextBox" /> 
    </TextBox.Style> 
</TextBox> 
相關問題