У меня есть следующий xaml ComboBox
<ComboBox x:Name="NameComboBox"
Text="{Binding NameText, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, Mode=TwoWay, Converter={StaticResource StringToUppercaseConverter}}"
SelectedItem="{Binding SelectedPerson, Mode=TwoWay}"
ItemsSource="{Binding Users}"
DisplayMemberPath ="Name"
ItemTemplate="{StaticResource UserSummaryDataTemplate}"
IsEnabled="{Binding IsEditable}"
IsEditable="{Binding IsEditable}"/>
Я знаю, что конвертер строки в верхний работает, так как я использую его во многих других местах. Путь к отображаемому элементу здесь - это свойство класса, которое находится в наблюдаемой коллекции «Пользователи». Шаблон элемента здесь представляет собой просто текстовое поле, которое связано с тем же свойством Name, что и путь члена. Это настроено таким образом, потому что, если пользователь вводит имя, которое не является именем в коллекции, и сохраняет, он создаст нового пользователя с указанным NameText. Когда я печатаю в поле со списком, я ожидаю, что строка заставит все символы использовать заглавные буквы, как это происходит, когда я использую этот конвертер в любом другом элементе ввода текста. Свойство NameText - это простое строковое свойство в модели представления, которое обновляется только этой текстовой записью. Я предполагаю, что здесь происходит что-то странное, когда путь к элементу отображения взаимодействует с моим текстом. Я делаю что-то очень похожее на это в другом комбинированном окне, и это работает, но его источником является просто наблюдаемая коллекция строк, и у нее нет displayMemberPath. Что мне здесь не хватает?
** дополнительная находка. Я добавил метод TextBoxBase.TextChanged в код позади и отправитель (NameComboBox), имеет значение .Text того, что я ожидал. Полностью заглавная строка, но текст, который на самом деле отображается, не заглавными.