을 얻는 방법 ListBox ItemTemplate 스트레칭이 수평으로의 전체 너비 ListBox?
-
22-07-2019 - |
문제
내가 갖고 싶어 ListItems 을 확장하는 그들의 오렌지색 바탕의 Listbox.
현재 그들은만큼 넓은 FirstName+LastName.
내가 설정한 모든 요소들 수 있습니다:HorizontalAlignment=하고 있습니다.
내가 원하는 배경의 ListboxItems 확장으로 사용자 뻗어 목록 상자에서 나는 원하지 않을 넣어서 절대적인 값입니다.
나는 무엇을 해야하는 것이 그렇게 배경 색상의 ListBoxItems 만들기에 오신 것을 환영합니다 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>
해결책
나는 확신이 중복되지만,나를 찾을 수 없는 질문과 같은 대답.
추가 HorizontalContentAlignment="Stretch"
귀하의 ListBox.는 잘 되어야 한다.다만주의 자동 완성하기 때문에 그것은 그렇게 쉬운 일 HorizontalAlignment
실수.
다른 팁
내가 발견 여기에서 다른 솔루션, 므로 둘 다 포스트...
이에서 마일스 대답:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListBox.ItemContainerStyle>
이것은 나를 위해 일했다.
는 경우에 당신의 항목 넓 보 ListBox
, 다른 답변이 여기에 도움이되지 않습니다:항목 ItemTemplate
남아보다 넓은 ListBox
.
Fix 는 나를 위해 일하던 사용하지 않 가로 스크롤 막대,이는 분명히 말한 컨테이너의 모든 항목에 남아 있을 만큼 넓은 목록 상자입니다.
따라서 결정을 얻을 수 ListBox 항목처럼 다양한 목록자는지 여부,그들은 작고 필요한 스트레칭,또는 넓은 필요 포장은 다음과 같습니다:
<ListBox HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
이후 국경을 사용한 시각적 모양을 넣을 수 있으로 ListBoxItem 의 테마 리소와 속성을 수정할 수 있다.에 ItemTemplate,배치할 수 있습니다만 StackPanel 및 TextBlock.이 방법,코드에 상태로 유지되기도 깨끗한로서의 모습을 통해 제어 테마 리소과 데이터를 표시할 것입 통 DataTemplate.
에 대한 수정이었을 설정하는 시설 HorizontalAlignment="Stretch"
에 ItemsPresenter
안 ScrollViewe
r..
이 사람이...
<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>
또한 같은 문제를 가지고 있었습니다로 빠른 해결 방법,사용 혼합 방법을 결정하는 많은 패딩이었습니다.내 경우에는 그 12,그래서 사용되는 부정적인 여백을 얻을 수 있습니다.지금은 모든 것이할 수 있습 제대로 중심