ComboBox Привязка текста с конвертером, отличным от исходного, неправильно отображает текст - PullRequest
0 голосов
/ 31 октября 2018

У меня есть следующий 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 того, что я ожидал. Полностью заглавная строка, но текст, который на самом деле отображается, не заглавными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...