It is not easy but by registering the following TextChanged event handler I got the code below to convert every input to uppercase. If you add code to check your combobox selection you might get it to work.
private void RichTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
var textBox = (RichTextBox)sender;
var docStart = textBox.Document.ContentStart.DocumentStart;
foreach ( var change in e.Changes )
{
if( change.AddedLength > 0 )
{
var changeStart = docStart.GetPositionAtOffset(change.Offset, LogicalDirection.Forward);
var changeEnd = docStart.GetPositionAtOffset(change.Offset+change.AddedLength, LogicalDirection.Forward);
var changedRange = new TextRange(changeStart, changeEnd);
var currentText = changedRange.Text;
var upperText = currentText.ToUpper();
if( upperText != currentText )
{
changedRange.Text = upperText;
Debug.Print("Replaced " + currentText);
}
textBox.Selection.Select(changeEnd, changeEnd);
}
}
}