我有一个带TextSearchEnabled的可编辑WPF ComboBox。当他们键入以过滤ComboBox时,我需要强制用户的文本输入为大写。
我正在考虑修改作为控件一部分的文本框(名为“PART_EditableTextBox”)以设置 CharacterCasing =“Upper”,但我无法弄清楚如何执行此操作。
我是否需要使用触发器,或以某种方式修改模板?
答案 0 :(得分:8)
这有效,似乎是一个合理的解决方案:
protected void winSurveyScreen_Loaded(object sender, RoutedEventArgs e)
{
(comboBox.Template.FindName("PART_EditableTextBox", cbObservation) as TextBox).CharacterCasing = CharacterCasing.Upper;
}
确保组合框在加载时未折叠,否则将找不到模板。
答案 1 :(得分:3)
IMO,更快捷的方法是将UpdateTrigger设置为PropertyChanged,并在数据对象中将值更新为大写。
答案 2 :(得分:1)
我发现使用附加属性的post。允许在不重写代码的情况下将其用于所有ComboBox。
答案 3 :(得分:-1)
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;
}
}
}