WPF 국경 제어는 ListBoxItem의 너비에 걸쳐 있습니다
문제
내 WPF 응용 프로그램의 비즈니스 객체에 대한 데이터 템플릿을 정의하려고합니다.
<UserControl.Resources>
<DataTemplate x:Key="ResizedItemsDataTemplate" DataType="{x:Type resizer:ResizeMonitorItem}">
<Border x:Name="bdr" BorderBrush="Blue"
BorderThickness="1"
CornerRadius="2"
Width="auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Grid Margin="2">
<Grid.RowDefinitions>
<RowDefinition Height="14"></RowDefinition>
<RowDefinition Height="14"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding SaveAsFileName}"></TextBlock>
<TextBlock Grid.Row="1" Text="{Binding ResizedImageFilePath}"></TextBlock>
</Grid>
</Border>
</DataTemplate>
</UserControl.Resources>
<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0">
<Border BorderThickness="0,0,0,5" BorderBrush="DarkGray" >
<ListBox x:Name="ListBoxResizeItems" ItemsSource="{Binding Path=ResizeItems}" BorderThickness="0" ItemTemplate="{DynamicResource ResizedItemsDataTemplate}">
</ListBox>
</Border>
</Grid>
각 목록 상자 항목의 전체 너비에 걸쳐 x : name = bdr로 테두리를 정의하려면 어떻게해야합니까? 현재 그것은 내부의 텍스트 블록과 함께만 닿는다.
해결책
이것은 아마도 ListBoxItems 자체가 ListBox의 전체 너비를 차지하지 않는 것과 관련이있을 것입니다. 추가 HorizontalContentAlignment="Stretch"
당신의 속성 ListBox
그리고 폭을 채우기 위해 개별 항목을 늘리는지 확인하십시오.
다른 팁
그것을 해결했습니다. 트릭은 목록 상자에 horizontalContentalIngment = "Stretch"를 설정하여 내용물이 내용에 맞지 않고 전체 너비를 스트레칭하도록하는 것입니다.
<ListBox x:Name="ListBoxResizeItems"
HorizontalContentAlignment="Stretch"
ItemsSource="{Binding Path=ResizeItems}"
BorderThickness="0"
ItemTemplate="{DynamicResource ResizedItemsDataTemplate}" >
</ListBox>
Matt 죄송합니다. 제가이 게시물을 입력하면서 Thorugh에 답을 얻었습니다.
HorizontalContentalIngment는 내가 시도한 것과 비교하여 멋지고 깨끗한 솔루션입니다. 감사!
여기에 거의 효과가 있었지만 때로는 대화 상자를 더 넓고 영원히 더 넓게 만들었습니다.
Width="{Binding ActualWidth,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}"
제휴하지 않습니다 StackOverflow