3

我有一个带有 TextSearchEnabled 的可编辑 WPF 组合框。我需要在用户键入以过滤 ComboBox 时强制用户的文本输入为大写。

我正在考虑修改作为控件一部分的文本框(名为“PART_EditableTextBox”)以设置CharacterCasing="Upper",但是我不太清楚如何做到这一点。

我是否需要使用触发器,或以某种方式修改模板?

4

4 回答 4

8

这有效,似乎是一个合理的解决方案:

protected void winSurveyScreen_Loaded(object sender, RoutedEventArgs e)
{
    (comboBox.Template.FindName("PART_EditableTextBox", cbObservation) as TextBox).CharacterCasing = CharacterCasing.Upper;
}

确保组合框在加载时未折叠,否则将找不到模板。

于 2010-07-20T09:50:35.580 回答
3

IMO,更快的方法是将 UpdateTrigger 设置为 PropertyChanged,并且在数据对象中,在更新时将值大写。

于 2010-06-22T10:57:33.850 回答
1

我发现使用附加属性的帖子。允许在不重写代码的情况下将其用于所有 ComboBox。

于 2013-10-23T09:07:36.410 回答
-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;
        }
    }
}

或尝试为文本框创建附加行为

于 2010-06-22T12:51:24.543 回答