我想讓ListItems以其橙色背景擴展到Listbox的整個寬度。 ide
目前,它們的大小僅與名字+姓氏同樣。 spa
我已經設置了全部能夠設置的元素:HorizontalAlignment =「 Stretch」。 code
我但願ListboxItems的背景在用戶拉伸Listbox時擴展,因此我不想輸入絕對值。 orm
我該怎麼作才能使ListBoxItems的背景顏色填充ListBox的寬度? xml
<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>
若是您的項目比ListBox
寬 ,則此處的其餘答案將無濟於事: ItemTemplate
的項目仍然比ListBox
寬。 get
對我有用的解決方法是禁用水平滾動條,顯然,這也告訴容器全部這些項目的寬度僅與列表框同樣寬。 it
所以,得到與列表框同樣寬的ListBox項的組合修補程序以下:它們較小且須要拉伸,仍是較寬且須要包裝,以下所示: io
<ListBox HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
( 感謝滾動條的想法 ) ast
因爲邊框僅用於視覺外觀,所以能夠將其放入ListBoxItem的ControlTemplate中,而後在其中修改屬性。 在ItemTemplate中,您只能放置StackPanel和TextBlock。 這樣,代碼也保持乾淨,由於控件的外觀將經過ControlTemplate進行控制,而要顯示的數據將經過DataTemplate進行控制。 容器
自從我遇到這兩個職位以來,我在這裏找到了另外一個解決方案 ...
這是從邁爾斯的答案:
<ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> </Style> </ListBox.ItemContainerStyle>
這對我有用。
對我來講,解決方法是在ScrollViewe
r。中的ItemsPresenter
上設置屬性HorizontalAlignment="Stretch"
。
但願這能夠幫助某人...
<Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListBox"> <ScrollViewer x:Name="ScrollViewer" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" Padding="{TemplateBinding Padding}" HorizontalAlignment="Stretch"> <ItemsPresenter Height="252" HorizontalAlignment="Stretch"/> </ScrollViewer> </ControlTemplate> </Setter.Value> </Setter>
我也遇到了一樣的問題,做爲一種快速的解決方法,我使用blend來肯定要添加多少填充。 在個人例子中是12,因此我用負的餘量來消除它。 如今一切均可以正確居中了