[WPF] Align text in ComboBox
От: Константин Л. Франция  
Дата: 13.01.11 20:16
Оценка:
Господа, с айтемами в выпадающем списке разобрались. А вот как заставить выравнивать текст по правому краю в самом комбо?

Нужно чтобы в выпадающем меню текст был выровнен по левому краю, а окончательно выбранный по правому:

| Some item |V|
|Item1 |
|Item2 |
|... |
|ItemN |
__________________


Ничего не получается ни через стили, никак
Re: [WPF] Align text in ComboBox
От: MxMsk Португалия  
Дата: 13.01.11 20:47
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ> Ничего не получается ни через стили, никак

Если я все правильно понял, то такой пример:
<ComboBox IsEditable="True"
          HorizontalContentAlignment="Right">
    <ComboBox.ItemContainerStyle>
        <Style TargetType="{x:Type ComboBoxItem}">
            <Setter Property="HorizontalContentAlignment"
                    Value="Left"/>
        </Style>
    </ComboBox.ItemContainerStyle>
    <ComboBoxItem>First</ComboBoxItem>
    <ComboBoxItem>Second</ComboBoxItem>
    <ComboBoxItem>Third</ComboBoxItem>
</ComboBox>


Ключевое здесь — HorizontalContentAlignment. На него ориентируются стандартные стили как встроенного TextBox-а, так и ComboBoxItem-ов.
Re[2]: [WPF] Align text in ComboBox
От: Константин Л. Франция  
Дата: 14.01.11 14:01
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Здравствуйте, Константин Л., Вы писали:


КЛ>> Ничего не получается ни через стили, никак

MM>Если я все правильно понял, то такой пример:
MM>
MM><ComboBox IsEditable="True"
MM>          HorizontalContentAlignment="Right">
MM>    <ComboBox.ItemContainerStyle>
MM>        <Style TargetType="{x:Type ComboBoxItem}">
MM>            <Setter Property="HorizontalContentAlignment"
MM>                    Value="Left"/>
MM>        </Style>
MM>    </ComboBox.ItemContainerStyle>
MM>    <ComboBoxItem>First</ComboBoxItem>
MM>    <ComboBoxItem>Second</ComboBoxItem>
MM>    <ComboBoxItem>Third</ComboBoxItem>
MM></ComboBox>
MM>


MM>Ключевое здесь — HorizontalContentAlignment. На него ориентируются стандартные стили как встроенного TextBox-а, так и ComboBoxItem-ов.


Я пробовал — это не работает
Re[3]: [WPF] Align text in ComboBox
От: MxMsk Португалия  
Дата: 14.01.11 14:38
Оценка: 8 (1)
Здравствуйте, Константин Л., Вы писали:

MM>>Ключевое здесь — HorizontalContentAlignment. На него ориентируются стандартные стили как встроенного TextBox-а, так и ComboBoxItem-ов.

КЛ>Я пробовал — это не работает
Я же не от балды этот код написал. В 4-м WPF работает. А вот в 3.5 сейчас попробовал и действительно — не жужжит. Похоже проблема в том, что TextBox, выравнивая текст, смотрит только на TextAlignment, забивая на HorizontalContentAlignment. Давай попробуем так:
<ComboBox IsEditable="True"
          TextBlock.TextAlignment="Right">
    <ComboBoxItem>First</ComboBoxItem>
    <ComboBoxItem>Second</ComboBoxItem>
    <ComboBoxItem>Third</ComboBoxItem>
</ComboBox>
Re[4]: [WPF] Align text in ComboBox
От: Константин Л. Франция  
Дата: 14.01.11 15:41
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Здравствуйте, Константин Л., Вы писали:


MM>>>Ключевое здесь — HorizontalContentAlignment. На него ориентируются стандартные стили как встроенного TextBox-а, так и ComboBoxItem-ов.

КЛ>>Я пробовал — это не работает
MM>Я же не от балды этот код написал. В 4-м WPF работает. А вот в 3.5 сейчас попробовал и действительно — не жужжит. Похоже проблема в том, что TextBox, выравнивая текст, смотрит только на TextAlignment, забивая на HorizontalContentAlignment. Давай попробуем так:
MM>
MM><ComboBox IsEditable="True"
MM>          TextBlock.TextAlignment="Right">
MM>    <ComboBoxItem>First</ComboBoxItem>
MM>    <ComboBoxItem>Second</ComboBoxItem>
MM>    <ComboBoxItem>Third</ComboBoxItem>
MM></ComboBox>
MM>


никак
Re[5]: [WPF] Align text in ComboBox
От: MxMsk Португалия  
Дата: 14.01.11 17:33
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>никак

Что значит никак? Я этот вариант тоже проверил! Выкладывай свой XAML
Re[6]: [WPF] Align text in ComboBox
От: Константин Л. Франция  
Дата: 14.01.11 17:56
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Здравствуйте, Константин Л., Вы писали:


КЛ>>никак

MM>Что значит никак? Я этот вариант тоже проверил! Выкладывай свой XAML

<DataTemplate x:Key="selectConditionOrOpTemplate">
<ComboBox VerticalAlignment="Center" TextBlock.TextAlignment="Right"
SelectedItem="{Binding SelectedCondition}"
FontWeight="Bold"
ItemsSource="{Binding ConditionsAndOps}">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsOperation}" Value="False">
<Setter Property="FontWeight" Value="Normal"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
</DataTemplate>
Re[7]: [WPF] Align text in ComboBox
От: MxMsk Португалия  
Дата: 14.01.11 18:14
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ><DataTemplate x:Key="selectConditionOrOpTemplate">

В таком варианте работает мой первый
Автор: MxMsk
Дата: 13.01.11
пример, только у тебя в ItemContainerStyle почему-то не хватает Setter-а на HorizontalContentAlignment. Попробовал и на 3.5 и на 4.0. Но если 3.5 и IsEditable = true, то нужно использовать второй
Автор: MxMsk
Дата: 14.01.11
пример.
Re[8]: [WPF] Align text in ComboBox
От: Константин Л. Франция  
Дата: 14.01.11 19:23
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Здравствуйте, Константин Л., Вы писали:


КЛ>><DataTemplate x:Key="selectConditionOrOpTemplate">

MM>В таком варианте работает мой первый
Автор: MxMsk
Дата: 13.01.11
пример, только у тебя в ItemContainerStyle почему-то не хватает Setter-а на HorizontalContentAlignment. Попробовал и на 3.5 и на 4.0. Но если 3.5 и IsEditable = true, то нужно использовать второй
Автор: MxMsk
Дата: 14.01.11
пример.


у меня 3,5 и не работает ни один из
Re[9]: [WPF] Align text in ComboBox
От: MxMsk Португалия  
Дата: 14.01.11 19:55
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>у меня 3,5 и не работает ни один из

Остается только выложить минимально воспроизводимый пример
Re[10]: [WPF] Align text in ComboBox
От: Константин Л. Франция  
Дата: 14.01.11 20:14
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Здравствуйте, Константин Л., Вы писали:


КЛ>>у меня 3,5 и не работает ни один из

MM>Остается только выложить минимально воспроизводимый пример

я уже выложил
Re[11]: [WPF] Align text in ComboBox
От: MxMsk Португалия  
Дата: 14.01.11 20:36
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>я уже выложил

XAML-ами мы уже по-обменивались достаточно. У меня работает, у тебя нет. Может тогда лучше минимально воспроизводимый проект? А то я уже не знаю, что еще посоветовать. Разве что, может у тебя SP1 не установлен.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.