我想知道如果可见,如何在没有垂直滚动条的情况下获取或计算 ListBox 的实际宽度。
我想要做的是更改 ListBox 中每个项目的宽度,而不会被 Vertical Scrollbar 覆盖。
Width="{Binding ActualWidth,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}
至少,上面的绑定告诉我 ListBox 的实际宽度,但是这个不能处理垂直滚动条的宽度。
有什么好方法可以解决这个问题吗?
答案 0 :(得分:27)
尝试绑定到包含ViewportWidth
的{{1}}属性。
像这样:
ScrollViewer
答案 1 :(得分:0)
也许默认值会对您有所帮助:只是根本不要设置 Width
!
至少在我的情况下,不设置 Width
属性是完全足够的。虽然 Mårten Wikström 的回答完全正确,但我发现我的实际问题是我(不必要地)指定了 Width
并以错误的方式执行此操作(与 Aki24x 报告的方式相同)。
这是我的示例的简化案例。解决方案是删除第 4 行。
1 <ListBox.ItemTemplate>
2 <DataTemplate>
3 <Border
4 Width="..."
5 >