我有一個可編輯的WPF組合框和TextSearchEnabled。當他們鍵入以過濾ComboBox時,我需要強制用戶的文本輸入爲大寫。WPF組合框,強制輸入到UpperCase
我正在考慮修改屬於控件(名爲'PART_EditableTextBox')的文本框來設置CharacterCasing =「Upper」,但是我無法完全弄清楚如何做到這一點。
我是否需要使用觸發器或以某種方式修改模板?
我有一個可編輯的WPF組合框和TextSearchEnabled。當他們鍵入以過濾ComboBox時,我需要強制用戶的文本輸入爲大寫。WPF組合框,強制輸入到UpperCase
我正在考慮修改屬於控件(名爲'PART_EditableTextBox')的文本框來設置CharacterCasing =「Upper」,但是我無法完全弄清楚如何做到這一點。
我是否需要使用觸發器或以某種方式修改模板?
這工作和似乎是一個合理的解決方案:
protected void winSurveyScreen_Loaded(object sender, RoutedEventArgs e)
{
(comboBox.Template.FindName("PART_EditableTextBox", cbObservation) as TextBox).CharacterCasing = CharacterCasing.Upper;
}
確保組合框沒有癱倒在加載的,否則模板不會被發現。
IMO,更快的方法是將UpdateTrigger設置爲PropertyChanged,並在數據對象中更新時更新大寫值。
private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
Textbox editableTextbox = sender as Textbox;
foreach (char ch in e.Text)
{
if (Char.IsLower(ch))
{
editableTextbox.Text += Char.ToUpper(ch);
e.Handled = true;
}
}
}
我相信這段代碼會將所有大寫字母去掉輸入。 – 2010-06-22 16:55:01
@Robert Rossney:我不這麼認爲。只有在字符較小的情況下,它纔會被轉換爲大寫字母,並明確地附加到文本框中,並且進一步的處理將變爲假。如果它是較高的,那麼它根本不處理。 – Amsakanna 2010-06-23 04:49:09
好吧,我不會破壞你的驚喜,但你應該測試一下。它沒有達到我期望的效果,但它沒有達到你期望的效果。我從這個練習中得出的結論是,如果你處理'PreviewTextInput',你應該期望做大量的測試和思考,讓結果以你想要的方式工作。 – 2010-06-23 08:17:30
我發現post其中使用附加的屬性。允許您在不重寫代碼的情況下將其用於所有ComboBox。
無法解析符號cbObservation ...? – 2015-05-14 08:59:25
而不是「comboBox」和「cbObservation」,我使用組合框名稱 – 2016-12-15 15:34:48