Quiero que ListItems extienda con su fondo naranja todo el ancho del Listbox.
Actualmente solo son tan anchos como FirstName + LastName.
He configurado todos los elementos que puedo para: HorizontalAlignment = "Stretch".
Quiero que el fondo de ListboxItems se expanda a medida que el usuario estira el Listbox, por lo que no quiero poner valores absolutos.
¿Qué tengo que hacer para que el color de fondo de ListBoxItems llene el ancho de 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
Edward Tanguay
fuente
fuente
Encontré otra solución aquí , ya que me encontré con ambas publicaciones ...
Esto es de la respuesta de Myles:
Esto funcionó para mí.
fuente
Si sus elementos son más anchos que el
ListBox
, las otras respuestas aquí no ayudarán: los elementos en elItemTemplate
resto son más anchos que elListBox
.La solución que funcionó para mí fue deshabilitar la barra de desplazamiento horizontal, que, al parecer, también le dice al contenedor de todos esos elementos que permanezca tan ancho como el cuadro de lista.
Por lo tanto, la solución combinada para obtener elementos ListBox que son tan anchos como el cuadro de lista, ya sea que sean más pequeños y necesiten estirarse, o más anchos y necesiten envoltura, es la siguiente:
( créditos para la idea de la barra de desplazamiento )
fuente
Dado que el borde se usa solo para la apariencia visual, puede colocarlo en ControlTemplate de ListBoxItem y modificar las propiedades allí. En ItemTemplate, puede colocar solo StackPanel y TextBlock. De esta manera, el código también permanece limpio, ya que en la apariencia del control se controlará a través de ControlTemplate y los datos que se mostrarán se controlarán a través de DataTemplate.
fuente
La corrección para mí era propiedad conjunto
HorizontalAlignment="Stretch"
enItemsPresenter
el interiorScrollViewe
r ..Espero que esto ayude a alguien...
fuente
También tuve el mismo problema, como una solución rápida, usé blend para determinar cuánto relleno se estaba agregando. En mi caso eran 12, así que usé un margen negativo para deshacerme de él. Ahora todo se puede centrar correctamente
fuente