Windows8 ListView和项目之间的空间

Krz*_*zor 16 xaml listview gridview windows-8 windows-store-apps

我想更改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>
Run Code Online (Sandbox Code Playgroud)

我想尽可能地模仿普通的stackpanel(wchich可以包装元素).目前项目之间的空间(水平空间)太大了.我之前的问题 - > Windows 8 WrapPanel

提前致谢

Iri*_*son 29

您需要更改默认模板.如果你只想进行简单的更改,例如填充和边距,那么你可以这样做:(测试代码,应该工作)

            <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>
Run Code Online (Sandbox Code Playgroud)

要获得更多控制权,请通过在设计器中选择listviewitem并右键单击来制作整个默认模板的副本.选择编辑模板,编辑副本.这将生成默认模板,您可以在那里进行更改.您可以对listviewcontainer执行相同的操作.您也可以使用Blend来完成此操作.

我在这里添加了描述和图像(如何编辑默认模板)

让我知道它是怎么回事,如果你有更多的问题!祝好运!

编辑:

MemeDeveloper下面提到他仍然遇到问题并通过调整其他一些属性来解决它 - 他发布了一个代码并在这里回答,请务必看看.

  • 我发布了一篇博客文章,其中我已经包含了如何在VS或混合中进行描述和图像:)希望它有所帮助!不要犹豫,提出更多问题等链接:http://www.irisclasson.com/2012/07/22/example-winrtmetro-app-how-to-edit-default-template-in-visual-studio- 2012和 - 共混物/ (2认同)

Mem*_*per 20

据我所知(windows8.1 xaml商店应用程序),将这两个设置为零后

<ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="Padding" Value="0"/>
                    <Setter Property="Margin" Value="0"/>
Run Code Online (Sandbox Code Playgroud)

我仍然有令人沮丧的差距,我似乎无法摆脱.

在这里使用负边距可能会为你做但是......它的hacky,难以使用,并且不会总是导致预期的结果

拉出我的头发之后,我发现问题已经解决了这些家伙,即

ContentMargin ="0"填充="0"

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>
Run Code Online (Sandbox Code Playgroud)

希望能避免别人在键盘上反复砸他们的头;)


Pet*_*inl 9

我认为这里修改的正确ItemContainerStyle属性是MinHeight,而不是Margin或Padding.