Ich möchte, dass die ListItems mit ihrem orangefarbenen Hintergrund die gesamte Breite der Listbox erweitern.
Derzeit sind sie nur so breit wie der Vorname + Nachname.
Ich habe jedes Element festgelegt, das ich kann: HorizontalAlignment = "Stretch".
Ich möchte, dass der Hintergrund der ListboxItems erweitert wird, wenn der Benutzer die Listbox streckt, damit ich keine absoluten Werte eingeben möchte.
Was muss ich tun, damit die Hintergrundfarbe der ListBoxItems die Breite der ListBox ausfüllt?
<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>
quelle
Ich habe hier eine andere Lösung gefunden , da ich auf beide Post gestoßen bin ...
Dies ist aus der Myles-Antwort:
Das hat bei mir funktioniert.
quelle
Wenn Ihre Artikel sind breiter als die sind
ListBox
, helfen die anderen Antworten hier nicht weiter: Die Artikel inItemTemplate
bleiben breiter als dieListBox
.Die Lösung, die für mich funktioniert hat, bestand darin, die horizontale Bildlaufleiste zu deaktivieren, die anscheinend auch den Container aller dieser Elemente anweist, nur so breit wie das Listenfeld zu bleiben.
Daher lautet die kombinierte Korrektur zum Abrufen von ListBox-Elementen, die so breit wie das Listenfeld sind, unabhängig davon, ob sie kleiner sind und gedehnt werden müssen oder breiter und umbrochen werden müssen, wie folgt:
( Credits für die Idee der Bildlaufleiste )
quelle
Da der Rahmen nur für die visuelle Darstellung verwendet wird, können Sie ihn in die ControlTemplate von ListBoxItem einfügen und dort die Eigenschaften ändern. In der ItemTemplate können Sie nur das StackPanel und den TextBlock platzieren. Auf diese Weise bleibt der Code auch sauber, da das Erscheinungsbild des Steuerelements über die ControlTemplate gesteuert wird und die anzuzeigenden Daten über die DataTemplate gesteuert werden.
quelle
Das Update war für mich zu Set - Eigenschaft
HorizontalAlignment="Stretch"
aufItemsPresenter
innenScrollViewe
r ..Hoffe das hilft jemandem ...
quelle
Ich hatte auch das gleiche Problem, als schnelle Problemumgehung habe ich Blend verwendet, um zu bestimmen, wie viel Polsterung hinzugefügt wurde. In meinem Fall war es 12, also habe ich einen negativen Rand verwendet, um es loszuwerden. Jetzt kann jetzt alles richtig zentriert werden
quelle