我想更改listView中项目之间的间距(也许我应该使用另一个View-element?)代码如下所示:
<ListView SelectionMode="None" HorizontalContentAlignment="Left" >
<ListView.Items>
<TextBlock Text="Item 1" />
<TextBlock Text="Item 2" />
<TextBlock Text="Item 3" />
<TextBlock Text="Item 4" />
</ListView.Items>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal" HorizontalChildrenAlignment="left"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
我想尽可能地模仿普通的stackpanel(wchich可以包装元素)。目前项目之间的空间(水平空间)太大了。我之前的问题 - &gt; Windows 8 WrapPanel
提前致谢
答案 0 :(得分:28)
您需要更改默认模板。如果你只想进行简单的更改,例如填充和边距,那么你可以这样做:(测试代码并且应该工作)
<ListView>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal" HorizontalChildrenAlignment="left"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0"/>
</Style>
</ListView.ItemContainerStyle>
<ListViewItem>
<TextBlock Foreground="Wheat">hej</TextBlock>
</ListViewItem>
<ListViewItem>
<TextBlock Foreground="Wheat">hej</TextBlock>
</ListViewItem>
</ListView>
要获得更多控制权,请通过在设计器中选择listviewitem并右键单击来制作整个默认模板的副本。选择编辑模板,编辑副本。这将生成默认模板,您可以在那里进行更改。您可以对listviewcontainer执行相同的操作。您也可以使用Blend来完成此操作。
I've added a description and images here (how you can edit a default template)
让我知道它是怎么回事,如果你有更多问题!祝你好运!
编辑:
MemeDeveloper下面提到他仍然遇到问题并通过调整其他一些属性来解决它 - 他在这里发布了一个代码并回答,请务必看看。
答案 1 :(得分:18)
据我所知(windows8.1 xaml商店应用),将这两个设置为零后
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0"/>
我仍然有令人沮丧的差距,我似乎无法摆脱。
在这里使用负边距可能会为你做这件事,但是...它的hacky,难以使用,并且不会总是导致预期的结果
拔掉我的头发之后,我发现问题已经解决了这些人,即
<强> ContentMargin =&#34; 0&#34;填充=&#34; 0&#34;
在 ListViewItemPresenter 中,如下所示:
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Padding" Value="0" />
<Setter Property="Margin" Value="0" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="VerticalContentAlignment" Value="Top" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<ListViewItemPresenter ContentMargin="0" Padding="0" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
希望能避免其他人在键盘上反复砸他们的头;)
答案 2 :(得分:8)
我认为要修改的正确ItemContainerStyle属性是 MinHeight ,而不是边距或填充。
答案 3 :(得分:2)
您需要编辑ListBox.ItemContainerTemplate属性。 Blend或VS视觉设计师帮助提取它进行修改。
答案 4 :(得分:1)
用于消除Windows 8.1 Store App的GridView项目中的边距的解决方案。灵感来自上面的ListView解决方案。
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GridViewItem">
<GridViewItemPresenter ContentMargin="0" Padding="0"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GridView.ItemContainerStyle>