我不确定为什么,但是从类似的问题中,没有一个解决方案适用于我的情况。
我知道TextBox
有一个属性(CharacterCasing
),可以设置为Upper
,将任何小写字母转换为大写字母。它非常有效,因为用户在输入时不会受到干扰,大写锁定和Shift键也不会对其产生负面影响,其他非字母字符也不会受到负面影响。
问题是ComboBox没有使用此属性的选项。那个类似的帖子中的解决方案似乎对我无效。我想复制CharacterCasing属性,但是应用于ComboBox。我不介意它成为一个附加属性,实际上这很好。我尝试了一些直接在xaml对象上使用的不同事件,但没有成功。
var textBox = comboBox.Template.FindName("PART_EditableTextBox", comboBox) as TextBox;
将textBox设置为null,这就是为什么CharacterCasing
从未应用的原因。 - myermiancomboBox.Loaded -= comboBox_Loaded;
。这只是一个小优化,以防在控件加载之前多次调用PropertyChanged(据我所知,这应该是可能的,并且会导致对ApplyCharacterCasing的重复调用,即使它仍然可以正常工作)。 - TCC