Eu quero ter os ListItems para estender com seu plano de fundo laranja toda a largura da caixa de listagem.
Atualmente, eles são apenas tão largos quanto o Nome + Sobrenome.
Eu configurei todos os elementos possíveis para: HorizontalAlignment = "Stretch".
Quero que o plano de fundo dos ListboxItems se expanda à medida que o usuário estende a Listbox, para que eu não queira colocar valores absolutos.
O que tenho que fazer para que a cor de fundo dos ListBoxItems preencha a largura do 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>
fonte
Encontrei outra solução aqui , já que encontrei os dois posts ...
Isto é da resposta de Myles:
Isso funcionou para mim.
fonte
Se seus itens forem mais largos que o
ListBox
, as outras respostas aqui não ajudarão: os itens noItemTemplate
permanecerão mais largos que oListBox
.A correção que funcionou para mim foi desabilitar a barra de rolagem horizontal, que, aparentemente, também informa ao contêiner de todos esses itens que permaneçam apenas tão largos quanto a caixa de listagem.
Portanto, a correção combinada para obter itens do ListBox tão amplos quanto o da caixa de listagem, sejam menores e precisem de alongamento, ou mais amplos e precisem de agrupamento, é a seguinte:
( créditos para a ideia da barra de rolagem )
fonte
Como a borda é usada apenas para aparência visual, você pode colocá-la no ControlTemplate do ListBoxItem e modificar as propriedades. No ItemTemplate, você pode colocar apenas o StackPanel e o TextBlock. Dessa maneira, o código também permanece limpo, pois na aparência do controle será controlado via ControlTemplate e os dados a serem mostrados serão controlados através do DataTemplate.
fonte
A correção para mim foi a propriedade conjunto
HorizontalAlignment="Stretch"
noItemsPresenter
interiorScrollViewe
r ..Espero que isso ajude alguém ...
fonte
Eu também tive o mesmo problema, como solução rápida, usei a mistura para determinar a quantidade de preenchimento que estava sendo adicionada. No meu caso, eram 12, então usei uma margem negativa para me livrar dela. Agora tudo agora pode ser centralizado corretamente
fonte