用于跨越listboxItem宽度的wpf边框控件
我正在尝试为wpf应用程序中的业务对象定义一个dataTemplate,该应用程序的集合将绑定到一个列表框用于跨越listboxItem宽度的wpf边框控件,wpf,listbox,border,Wpf,Listbox,Border,我正在尝试为wpf应用程序中的业务对象定义一个dataTemplate,该应用程序的集合将绑定到一个列表框 <UserControl.Resources> <DataTemplate x:Key="ResizedItemsDataTemplate" DataType="{x:Type resizer:ResizeMonitorItem}"> <Border x:Name="bdr" BorderBrush="Blue"
<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定义的边框以跨越每个listbox项的整个宽度?目前,它只跨其中的文本块,不必填充listboxitem的整个宽度,并且每个listboxitem也会有所不同。这可能与ListBoxItems本身不占用listboxitem的整个宽度有关。将
HorizontalContentAlignment=“Stretch”
属性添加到您的列表框
,查看它是否拉伸各个项目以填充宽度。解决了这个问题。诀窍是在listbox上设置HorizontalContentAlignment=“Stretch”,使其内容完全伸展,而不是只适合内容
<ListBox x:Name="ListBoxResizeItems"
HorizontalContentAlignment="Stretch"
ItemsSource="{Binding Path=ResizeItems}"
BorderThickness="0"
ItemTemplate="{DynamicResource ResizedItemsDataTemplate}" >
</ListBox>
对不起,马特,我刚在打字的时候得到了你的答案。与我尝试的相比,HorizontalContentAlignment是一个不错的、干净的解决方案。谢谢 下面是一些几乎有效的方法,但有时会使对话框变得越来越宽:
Width="{Binding ActualWidth,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}"
美好的我不知道那房子的事。太糟糕了,默认值是Left而不是Stretch,这导致了这种行为。Disco知道这个属性,但对WPF来说仍然是新的,这正是我想要的。谢谢如果有一个非常好的解决方案,为什么要发布一个几乎有效的答案?特别是在问题被回答10个月后。。。(不过,旁注:我刚才的做法与你刚才的做法完全相同:)