Я хочу, чтобы ListItems расширяли своим оранжевым фоном всю ширину списка.
В настоящее время они имеют такую же ширину, как FirstName + LastName.
Я установил каждый элемент, который могу: HorizontalAlignment = "Stretch".
Я хочу, чтобы фон ListboxItems расширялся, когда пользователь растягивал Listbox, поэтому я не хочу вводить абсолютные значения.
Что мне нужно сделать, чтобы цвет фона ListBoxItems заполнил ширину ListBox?
<Window x:Class="TestListBoxSelectedItemStyle.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestListBoxSelectedItemStyle"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<local:CustomerViewModel x:Key="TheDataProvider"/>
<DataTemplate x:Key="CustomerItemTemplate">
<Border CornerRadius="5" Background="Orange" HorizontalAlignment="Stretch" Padding="5" Margin="3">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" Width="Auto">
<TextBlock HorizontalAlignment="Stretch">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</Border>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox ItemsSource="{Binding Path=GetAllCustomers, Source={StaticResource TheDataProvider}}"
ItemTemplate="{StaticResource CustomerItemTemplate}"/>
</Grid>
</Window>
xaml
listboxitem
Эдвард Тангей
источник
источник
Я нашел другое решение здесь , так как наткнулся на оба поста ...
Это из ответа Майлза:
Это сработало для меня.
источник
Если ваши элементы шире, чем
ListBox
другие, другие ответы здесь не помогут: элементы вItemTemplate
списке остаются шире, чемListBox
.Исправление, которое работало для меня, состояло в том, чтобы отключить горизонтальную полосу прокрутки, которая, по-видимому, также сообщает контейнеру всех этих элементов, чтобы они оставались такими же широкими, как и список.
Следовательно, комбинированное исправление для получения элементов ListBox, которые равны ширине списка, независимо от того, являются ли они меньше и нуждаются в растяжении или шире и нуждаются в переносе, заключаются в следующем:
( кредиты за идею полосы прокрутки )
источник
Поскольку граница используется только для визуального отображения, вы можете поместить ее в ControlTemplate объекта ListBoxItem и изменить там свойства. В ItemTemplate вы можете разместить только StackPanel и TextBlock. Таким образом, код также остается чистым, так как внешний вид элемента управления будет контролироваться через ControlTemplate, а отображаемые данные будут контролироваться через DataTemplate.
источник
Исправление для меня было установить свойство
HorizontalAlignment="Stretch"
наItemsPresenter
внутреннемScrollViewe
г ..Надеюсь, это поможет кому-то ...
источник
У меня также была та же проблема, поскольку в качестве быстрого обходного пути я использовал blend, чтобы определить, сколько отступов было добавлено. В моем случае это было 12, поэтому я использовал отрицательный запас, чтобы избавиться от него. Теперь все теперь может быть правильно отцентрировано
источник