我遇到了一个非常奇怪的功能" ListView。希望有人可以帮助我。
在Window上创建ListView时,它会在边框和内容之间加上默认的间距。如果你看一下Snoop的信息,我猜它是2(左和右)的填充。 ListBoxChrome(ListView的一部分)在我的情况下是363px宽。其中的ScrollViewer是359px。这些控件都没有设置任何内容。即使是一个带有简单ListView的新项目也存在这个问题。
一种解决方法是给标题单元格填充-2,但由于某种原因,标题不会填充到右边,并在右边留下更大的间隙。
有人在这帮助我吗?
一些截图:
答案 0 :(得分:0)
来自BorderThickness
元素的Padding
和Border
的组合(每个元素左起2px.1px,右起1px)。
您可以设置
<ListView BorderThickness="0">
并且松散的2px,但Windows-8上的至少Padding
直接设置在默认模板中的Border
控件上,如果直接在ListView
上设置,则不会产生任何影响/ p>
从Style
ListView
中提取
<ControlTemplate TargetType="{x:Type ListView}">
<Border x:Name="Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="1"
SnapsToDevicePixels="true">
最简单的选项是提供自定义Style
,您可以将Padding
值调整为0.您还可以选择使用Behavior并获取对Border控件的引用并覆盖代码中的填充。 / p>
如果您选择代码隐藏选项来覆盖Padding
,则设置填充的粗略方法可能如下:
public MainWindow()
{
InitializeComponent();
Loaded += (sender, args) => {
var border = (Border)lv.Template.FindName("Bd", lv);
border.Padding = new Thickness(0);
};
}
和你的xaml:
<ListView x:Name="lv"
BorderThickness="0">