搜了一下,没找到类似的文章和解决方案,仔细研究模板,发现可以通过设置内容宽度来规避此问题。
ListBox的Style中,除了标题信息,有下面几行代码:
<ScrollViewer OverridesDefaultStyle="True" HorizontalScrollBarVisibility="Disabled">
<ItemsPresenter />
</ScrollViewer>
这段代码是ListBox的内容,存放于ScrollViewer中,可以通过ItemContainerStyle来设定显示的模板。
所以我们只需要修改这里的代码,就可以影响内容整体的显示。
目前解决方法如下:
<ScrollViewer x:Name="ItemsSV" OverridesDefaultStyle="True" HorizontalScrollBarVisibility="Disabled">
<ItemsPresenter Width="{Binding ElementName=ItemsSV,Path=ActualWidth}" />
</ScrollViewer>
强制将内容的宽度绑定为父容器的宽度,滚动条占据内容宽度,导致无法对齐的问题就可以解决了。
虽然这样会导致最右边的内容有一点被滚动条遮挡,但足以适应大部分场景。