Saya ingin ListItems untuk memperluas dengan latar belakang oranye mereka lebar penuh dari Listbox.
Saat ini mereka hanya selebar FirstName + LastName.
Saya telah mengatur setiap elemen yang saya bisa ke: HorizontalAlignment = "Stretch".
Saya ingin latar belakang ListboxItems meluas saat pengguna merentangkan Listbox jadi saya tidak ingin memasukkan nilai absolut.
Apa yang harus saya lakukan agar warna latar belakang ListBoxItems mengisi lebar 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>
sumber
Saya menemukan solusi lain di sini , karena saya berlari ke kedua pos ...
Ini dari jawaban Myles:
Ini berhasil untuk saya.
sumber
Jika item Anda lebih luas daripada
ListBox
, jawaban lain di sini tidak akan membantu: item diItemTemplate
tetap lebih luas daripadaListBox
.Perbaikan yang berhasil bagi saya adalah untuk menonaktifkan scrollbar horizontal, yang, tampaknya, juga memberitahu wadah semua item untuk tetap hanya selebar kotak daftar.
Karenanya perbaikan gabungan untuk mendapatkan item ListBox yang selebar kotak daftar, apakah mereka lebih kecil dan perlu peregangan, atau lebih luas dan perlu pembungkus, adalah sebagai berikut:
( kredit untuk gagasan bilah gulir )
sumber
Karena perbatasan digunakan hanya untuk tampilan visual, Anda bisa memasukkannya ke ControlTemplate ListBoxItem dan memodifikasi properti di sana. Di ItemTemplate, Anda hanya bisa menempatkan StackPanel dan TextBlock. Dengan cara ini, kode juga tetap bersih, karena dalam tampilan kontrol akan dikontrol melalui ControlTemplate dan data yang ditampilkan akan dikontrol melalui DataTemplate.
sumber
Perbaikan untuk saya adalah untuk mengatur properti
HorizontalAlignment="Stretch"
diItemsPresenter
dalamScrollViewe
..Semoga ini bisa membantu seseorang ...
sumber
Saya juga memiliki masalah yang sama, sebagai solusi cepat, saya menggunakan campuran untuk menentukan berapa banyak bantalan yang ditambahkan. Dalam kasus saya itu 12, jadi saya menggunakan margin negatif untuk menghilangkannya. Sekarang semuanya sekarang dapat dipusatkan dengan benar
sumber