WindowsView ListView и пространство между элементами

Я хочу изменить интервал между элементами в listView (может быть, я должен использовать другой элемент View?) Код выглядит следующим образом:

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

Я хочу подражать как можно больше обычной панели стека (wchich может обернуть элементы). В настоящее время пространство (горизонтальное пространство) между элементами слишком велико. Мой предыдущий вопрос → Windows 8 WrapPanel

Заранее спасибо

Ответы

Ответ 1

Вам нужно будет внести изменения в шаблон по умолчанию. Если вы просто хотите сделать простые изменения, такие как заполнение и поля, вы можете сделать это: (протестировал код и должен работать)

            <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.

Я добавил описание и изображения здесь (как вы можете редактировать шаблон по умолчанию)

Сообщите мне, как это происходит, и если у вас есть еще вопросы! Удачи!

EDIT:

MemeDeveloper упомянул ниже, что у него все еще были проблемы и он решил его, изменив некоторые другие свойства - он разместил код и ответ здесь, обязательно взгляните.

Ответ 2

Насколько я знаю (приложение xaml store8.1), после установки этих двух в нуль

<ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="Padding" Value="0"/>
                    <Setter Property="Margin" Value="0"/>

У меня все еще были неприятные пробелы, от которых я, казалось бы, не мог избавиться.

Использование отрицательных полей здесь может сделать это для вас, но... его хакерство, трудное для работы и не всегда приведет к ожидаемым результатам

Потянув мои волосы, я обнаружил, что проблема решена с этими парнями, т.е.

ContentMargin = "0" Padding = "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>

Надеюсь, что кто-то еще не сможет разбить их голову на клавиатуре;)

Ответ 3

Я думаю, что правильное свойство ItemContainerStyle для модификации здесь MinHeight, а не Margin или Padding.

Ответ 4

Вам нужно отредактировать свойство ListBox.ItemContainerTemplate. Визуальный дизайнер Blend или VS помогает извлечь его для модификации.

Ответ 5

Решение для выравнивания полей в элементах GridView для приложения Windows 8.1 Store. Вдохновленный вышеуказанным решением 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>