【发布时间】:2016-11-24 13:24:21
【问题描述】:
所以我有一个列表框,我试图在里面使用一个堆栈面板作为一个带有边框的项目。现在我希望每个项目的宽度都与我的列表框相同,列表框固定在窗口的两侧。我找到了如何设置相对于父级的宽度,但由于某种原因它变得更宽。似乎无法弄清楚为什么。如下图所示的代码。
<ListBox x:Name="listBoxSecrets" Margin="10,107,10,10" Background="{x:Null}">
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Orange" CornerRadius="2,2,2,2" BorderThickness="2,2,2,2">
<StackPanel Background="White"
Width="{Binding RelativeSource=
{RelativeSource FindAncestor,
AncestorType={x:Type ListBox}},
Path=ActualWidth}"
>
<TextBlock Text="{Binding Path=Name}" />
<TextBlock Text="{Binding Path=Totp}" />
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
【问题讨论】:
-
如果您删除
Width="{Binding RelativeSource= ...会发生什么?项目应适合 ListBox 宽度 -
我添加它是为了让它们更宽。如果我不这样做,它们只是内容的大小。也许是因为边界?
-
我明白了。不,它不是 Border,它是 ListBox 属性。
<ListBox HorizontalContentAlignment="Stretch" ...应该改进它 -
@ASh 好的!那解决了它!谢啦! :)
标签: c# wpf xaml listbox stackpanel