У меня есть ComboBox, который показывает текст разной длины. Для текстов, которые не долго, проблем нет. Для текстов дольше, чем ширина ComboBox, я хотел бы обрезать текст и добавить «...» (эллипсис) в конце, чтобы показать их правильно. Суть в том, что я не хочу менять ширину ComboBox. Кто-нибудь знает как это сделать?Как правильно отображать слишком длинный текст в WPF ComboBox
ответ
Используйте пользовательские ItemTemplate
для ComboBox
, что делает использование TextBlock
с TextTrimming
имущества, установленным в CharacterEllipsis
.
Пример:
<ComboBox ItemsSource="..." SelectedValuePath="...">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock
Text="{Binding ...}"
TextTrimming="CharacterEllipsis" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Вы можете использовать TextTrimmingCharacterEllipsis
или WordEllipsis
для текстовых блоков в своем поле со списком.
Ответ, как сказал Росс, является реализация пользовательских ItemTemplate
. Однако, чтобы заставить его работать правильно, вам необходимо выполнить привязку должным образом.
Примечание к этому методу: вы не можете установить DisplayMemberPath
и ItemTemplate
, он должен быть тем или иным.
Таким образом, в общем случае, когда элемент отображения является элемент (например, для строки), вы можете использовать связывание без свойств связываться с DataContext
шаблона:
<ComboBox ItemsSource="..." SelectedValuePath="...">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding }" TextTrimming="CharacterEllipsis" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Или, вы можете поместить его в стиле.
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding }" TextTrimming="CharacterEllipsis" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
Для случая, когда вы хотите связать с конкретным свойством объекта, подобно тому, как вы будете использовать DisplayMemberPath
свойство, заменить связывание с привязкой, что вы будете использовать в собственности на объект, вы привязываетесь. Таким образом, заменить четвертую строчку в моем первом примере с чем-то вроде этого:
<TextBlock Text="{Binding MyDisplayMemberProperty}" TextTrimming="CharacterEllipsis" />
Связывание в контексте одного элемента типа, связанного с вашей ComboBox. Для того, чтобы сделать это более явным, вы можете сделать следующее:
<DataTemplate DataType="{x:Type namespace:MyItemType}">
<!-- My DataTemplate stuff here -->
</DataTemplate>
Это даст вам подсказки для свойств объекта в то время как вы пишете код внутри DataTemplate
.
- 1. Элемент ComboBox слишком длинный
- 2. jQueryUI Autocomplete ComboBox Слишком длинный
- 3. Как отображать длинный текст многострочный в ListView
- 4. Слишком длинный текст для TextView
- 5. Слишком длинный текст для titleForHeaderInSection
- 6. Android RecyclerView текст слишком длинный
- 7. Как отображать начальное значение в ComboBox WPF
- 8. Создайте прокручиваемый текст, когда текст слишком длинный
- 9. Как переместить текст, если он слишком длинный?
- 10. Как обрабатывать текст заголовка JavaFX слишком длинный?
- 11. WPF ComboBox получить текст
- 12. Текст слишком длинный для Bootstrap Popover
- 13. Слишком длинный текст. Как сделать его пригодным для выбора размера
- 14. Получить ComboBox текст в WPF
- 15. Текст в редакторе Visual Studio слишком длинный
- 16. WPF ComboBox выделенный текст элемента
- 17. WPF: слишком длинный путь к файлу хранилища
- 18. WPF ComboBox текст внутри ListBox
- 19. Изменить отображение WPF ComboBox Текст
- 20. Fade слишком длинный текст внутри HTML-элемента
- 21. Watch App - Замените ... когда текст слишком длинный
- 22. JQuery mobile Выберите Текст варианта слишком длинный
- 23. Текст редактирования WPF ComboBox Автозаполнение
- 24. WPF Combobox - Отредактированный выделенный текст
- 25. Как получить выделенный текст из WPF Combobox?
- 26. Как скрыть слишком длинный текст в таблице сетки twitter-bootstrap?
- 27. Как отображать очень длинный текст (например, книгу) в текстовом режиме?
- 28. Вертикально расширяйте текстовое поле автоматически, когда текст слишком длинный
- 29. Текст уведомления слишком длинный и не отображается полный текст
- 30. Слишком длинный в CSS3
Связывание, существующее в Combobox ранее, не работает в этом формате – Prat
http://stackoverflow.com/questions/18825882/combobox-textwrap-binding – Prat