powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ComboBox + TextTrimming
12 сообщений из 12, страница 1 из 1
ComboBox + TextTrimming
    #37171312
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как сделать TextTrimming.WordEllipses для выбранного элемента в комбобоксе?
Т.е. если текст не поместился, то в конце выводится "...".
Комбобокс имеет фиксированную ширину.
Свойство такое есть у TextBlockа, но нет у комбобокса.

ItemTemplate применяется только для выпадающего списка.
Код: plaintext
1.
2.
3.
4.
<ComboBox.ItemTemplate>
    <DataTemplate>
        <TextBlock TextTrimming=... />
    </DataTemplate>
</ComboBox.ItemTemplate>

Как настроить комбобокс, чтобы при выборе элемента с длинным текстом в комбобоксе к нему применялось свойство TextTrimming.WordEllipses?
...
Рейтинг: 0 / 0
ComboBox + TextTrimming
    #37171360
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно использовать ContentPresenter в ControlTemplate.
...
Рейтинг: 0 / 0
ComboBox + TextTrimming
    #37171763
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почти получилось это сделать, но в первом комбобоксе используется:
Код: plaintext
1.
2.
3.
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}"  HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
    <TextBlock Text="Очень длинный текст" TextTrimming="WordEllipsis"/>
</ContentPresenter>
а во втором:
Код: plaintext
1.
2.
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
    <TextBlock Text="{TemplateBinding Content}" TextTrimming="WordEllipsis"/>
</ContentPresenter>

Остается только правильно прибиндить свойство Text TextBlocka в ContentPresenter'е к выделенному элементу коллекции (и починить ToggleDropDown).
Если кто-нибудь подскажет как это лучше сделать, то буду очень признателен.
Тестовый проект прилагаю.
...
Рейтинг: 0 / 0
ComboBox + TextTrimming
    #37171767
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тестовый проект прилагаю.
...
Рейтинг: 0 / 0
ComboBox + TextTrimming
    #37171832
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmatic,

Template переопределите и не мучайтесь). В мсдн был стандартный шаблон.
...
Рейтинг: 0 / 0
ComboBox + TextTrimming
    #37172162
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руки-крюки,

Но не придется ли тогда переписывать всё визуальное дерево элементов в стиле?
Судя по Template , придется. Или я не прав?
...
Рейтинг: 0 / 0
ComboBox + TextTrimming
    #37172180
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmatic,

Придется, но можно взять стандартный шаблон (все уже определено в нем) и подправить под свои нужды.
...
Рейтинг: 0 / 0
ComboBox + TextTrimming
    #37172308
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticItemTemplate применяется только для выпадающего списка.
...
Как настроить комбобокс, чтобы при выборе элемента с длинным текстом в комбобоксе к нему применялось свойство TextTrimming.WordEllipses?
да вроде применяется и для выбранного
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
        <ComboBox ItemsSource="{Binding}" Height="23" HorizontalAlignment="Left" Margin="0,29,0,0" x:Name="comboBox2" VerticalAlignment="Top" Width="120">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=Text}" TextTrimming="WordEllipsis" />
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
...
Рейтинг: 0 / 0
ComboBox + TextTrimming
    #37172438
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руки-крюки,

А, значит я так и делал в бленде: Edit Template -> Edit Copy...

LR,

Действительно, что-то я протупил.

Руки-крюки, LR,
Спасибо большое.
...
Рейтинг: 0 / 0
ComboBox + TextTrimming
    #37172470
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmatic,

дело в том, что в "окошечко" выбранного элемента подсовывается шаблон (этого выбранного) элемента - тот что в списке, а шаблона для "окошечка" в сильвере, похоже, нет...
http://forums.silverlight.net/forums/p/174743/393953.aspx#393953
https://connect.microsoft.com/VisualStudio/feedback/details/552268/silverlight-forum-need-selecteditemtemplate-combobox
...
Рейтинг: 0 / 0
ComboBox + TextTrimming
    #37172862
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

Спасибо.
...
Рейтинг: 0 / 0
ComboBox + TextTrimming
    #37173322
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При создании ComboBox в коде возникает проблема создания DataTemplate в коде, которая решается с помощью XamlReader.
Например для
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<ComboBox>
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock
                Text="{Binding Text}"
                TextTrimming="WordEllipsis" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>
будет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
private void SetDataTemplateInCode(ComboBox cb) {
    StringBuilder sbTemp = new StringBuilder();
    sbTemp.Append("<DataTemplate ");
    sbTemp.Append("xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' ");
    sbTemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' >");
    sbTemp.Append("<TextBlock Text=\"{Binding Text}\" TextTrimming=\"WordEllipsis\" />");
    sbTemp.Append("</DataTemplate>");

    var dt = (DataTemplate)XamlReader.Load(sbTemp.ToString());

    cb.ItemTemplate = dt;
}
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ComboBox + TextTrimming
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]