如果可见,如何获取或计算没有垂直滚动条的ListBox的实际宽度

时间:2011-04-02 22:08:01

标签: wpf binding listbox scrollbar

我想知道如果可见,如何在没有垂直滚动条的情况下获取或计算 ListBox 的实际宽度。

我想要做的是更改 ListBox 中每个项目的宽度,而不会被 Vertical Scrollbar 覆盖。

Width="{Binding ActualWidth, 
    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}

至少,上面的绑定告诉我 ListBox 的实际宽度,但是这个不能处理垂直滚动条的宽度。

有什么好方法可以解决这个问题吗?

2 个答案:

答案 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              >