#c# #wpf
#c# #wpf
Вопрос:
Приведенный ниже код не выравнивает текст по правому краю. Если я не использую Window.Ресурсы (я хочу изменить цвет выбранного элемента) код работает. Не могли бы вы мне помочь, пожалуйста?
<Window.Resources>
<Style x:Key="_ListBoxItemStyle" TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border Name="_Border"
Padding="2"
SnapsToDevicePixels="true">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="_Border" Property="Background" Value="Gray"/>
<Setter Property="Foreground" Value="Yellow"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<ListBox x:Name="myListBox" ItemContainerStyle="{DynamicResource _ListBoxItemStyle}" Margin="0,20,0,30"
VerticalAlignment="Top" Width="800" HorizontalAlignment="Right" MinHeight="200" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
SelectionChanged="myListBox_SelectionChanged" MouseDoubleClick="myListBox_MouseDoubleClick" Panel.ZIndex="2"
BorderThickness="0" FontSize="15" Background="{x:Null}"
HorizontalContentAlignment="Right">
</ListBox>
Ответ №1:
Вы заменяете ListBoxItem
ControlTemplate, и ваш шаблон игнорирует HorizontalContentAlignment
свойство:
Исправить:
<ControlTemplate TargetType="ListBoxItem">
<Border Name="_Border"
Padding="2"
SnapsToDevicePixels="true">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
</Border>
Ответ №2:
Попробуйте установить свойство style для вашего элемента, иначе созданное вами окно ресурсов установит его для вас.
Сделав это, я смог достичь вашего желания (возможно, это немного сложно) :
<ListBox x:Name="myListBox" ItemContainerStyle="{DynamicResource _ListBoxItemStyle}" Margin="0,20,0,30"
VerticalAlignment="Top" Width="800" HorizontalAlignment="Right" MinHeight="200" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Panel.ZIndex="2"
BorderThickness="0" FontSize="15" Background="{x:Null}"
HorizontalContentAlignment="Right">
<ListBoxItem>
<TextBlock HorizontalAlignment="Right" Text="Test"></TextBlock>
</ListBoxItem>
</ListBox>