2013-04-12 23 views
0

我需要在wpf中將密碼框設置爲不可編輯。 我用
的IsEnabled = FALSE如何在wpf中使密碼框不可編輯

但它影響了我的風格有些模糊效果就因爲這樣... 是否有任何其他的方式來實現這一目標?

+0

對不起,要問爲什麼你需要密碼框爲不可編輯。沒有isReadOnly。也許將它綁定到Get set with no。 – Paparazzi

+0

無法綁定PassWord屬性,因爲它不是依賴項屬性。 – Paparazzi

回答

3

您可以處理PreviewTextInput事件,防止用戶輸入文字。像這樣:

的XAML:

<PasswordBox PreviewTextInput="HandleInput"/> 

代碼隱藏:

+1

,這並不妨礙'粘貼' – NSGaga

+0

@NSGaga正在尋找只讀密碼框自己的幫助。我想要處理粘貼問題,你可以添加一個PreviewKeyDown事件,也設置'E。Handled = true;'然後用'ContextMenu =「{x:Null}來禁用XAML中的PasswordBox ContextMenu' – famousKaneis

+1

@codeSwearing我只是在挑剔:)認真地說,你可能是對的,但我不認爲這是最好的方法,因爲它導致許多道路開放,鍵盤,鼠標和其他輸入事件等。當我看着這個,我不知道OP爲什麼需要這首先,但嘿,我寧願改變風格的'禁用'密碼框看起來像啓用,處理觸發器等,或做的建議沒有'設置'(通過附加屬性)或類似的東西。 – NSGaga

1

一種解決方案是創建一個自定義功能,以模仿IsReadOnly

有幾件事需要照顧 - 例如, clipboard pasting 也。

你定義一些附加屬性(例如IsPasswordReadOnly或者完全一樣)得到similar behavior - 這將制定出所有的需要。

這是一個很好的開始例子 - 可以,我應該認爲密碼框的工作 - 但我沒有嘗試過,你必須測試自己。

Readonly textbox for WPF with visible cursor (.NET 3.5)

你必須與PasswordBox更換引用TextBox,其重命名爲IsReadOnly - 我認爲剩下可能的工作是相同的。

你使用它就像...

<PasswordBox my:AttachReadOnly.IsReadOnly="True" /> 
0

很簡單..

設置PreviewTextInput的事件處理程序在你的XML像這樣:

PreviewTextInput="PasswordBoxOnPreviewTextInput" 

這方法中:

private void PasswordBoxOnPreviewTextInput(object sender, TextCompositionEventArgs e) 
    { 
     if (m_DisablePasswordBox) 
      e.Handled = true; 
    } 

它現在會阻止你輸入任何東西:)

1

我知道這是兩歲,但我有同樣的需要,並以這種方式解決: 這兩個屬性的組合,都將設置爲false,將防止在控制中的輸入/編輯,不會影響您所需的風格: 可調焦,IsHitTestVisible

+0

偉大的答案!允許我在MVVM中完成 – Master