ListItem을 주황색 배경으로 Listbox의 전체 너비로 확장하고 싶습니다.
현재는 이름 + 성만큼 넓습니다.
가능한 모든 요소를 HorizontalAlignment = “Stretch”로 설정했습니다.
사용자가 Listbox를 확장함에 따라 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
실수로 쉽게 얻을 수 있으므로 자동 완성에주의하십시오 .
답변
두 게시물을 모두 보았으므로 여기 에서 다른 솔루션을 찾았 습니다 …
이것은 Myles의 답변입니다.
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListBox.ItemContainerStyle>
이것은 나를 위해 일했습니다.
답변
항목 인 경우 넓은 댄 ListBox
, 다른 답변 여기하지 않습니다 도움이 다음의 항목은 ItemTemplate
댄 넓은 남아있다 ListBox
.
나를 위해 일한 해결책은 가로 스크롤 막대를 비활성화하는 것입니다.이 스크롤 막대는 모든 항목의 컨테이너가 목록 상자만큼 넓게 유지되도록합니다.
따라서 목록 상자만큼 넓은 ListBox 항목을 가져 와서 늘리거나 늘리거나 래핑해야하는 결합 된 수정은 다음과 같습니다.
<ListBox HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
답변
테두리는 시각적 모양으로 만 사용되므로 ListBoxItem의 ControlTemplate에 넣고 속성을 수정할 수 있습니다. ItemTemplate에서는 StackPanel과 TextBlock 만 배치 할 수 있습니다. 이러한 방식으로 컨트롤의 모양이 ControlTemplate을 통해 제어되고 표시 될 데이터가 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 였으므로 그것을 없애기 위해 음수 마진을 사용했습니다. 이제 모든 것이 올바르게 중앙에 놓일 수 있습니다