Элемент шаблона ListView не заполняется

#xaml #listview #user-controls #uwp

#xaml #listview #пользовательские элементы управления #uwp

Вопрос:

Я создал шаблон для ListViewItem.

Он не заполняет все пробелы.

Мой шаблон следующий:

 <UserControl
x:Class="AgendaUWP.Styles.Template.ItemTemplateContatti"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:AgendaUWP.Styles.Template"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="100"
d:DesignWidth="400">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="3" />
        <ColumnDefinition  />
        <ColumnDefinition  />
    </Grid.ColumnDefinitions>
    <Border Background="CornflowerBlue" Grid.Column="0"  Width="3" Margin="0 0 0 0"  VerticalAlignment="Stretch"/>
            <StackPanel  Grid.Column="1"  Orientation="Vertical" Margin="10 0 0 0" HorizontalAlignment="Stretch" VerticalAlignment="Center" >
                <TextBlock Text="{Binding Tipo}" FontWeight="Thin" FontSize="10" TextAlignment="Center"  />
                <TextBlock Text="{Binding Descrizione}" FontWeight="SemiBold" FontSize="16" TextAlignment="Center"/>
            </StackPanel>
            <StackPanel   Grid.Column="2" Orientation="Vertical"  VerticalAlignment="Center"   HorizontalAlignment="Stretch" >
                <StackPanel Orientation="Horizontal" Margin="0 10 0 10" >
                    <SymbolIcon Symbol="Phone"  Margin="10 0 10 0"></SymbolIcon>
                    <TextBlock Text="{Binding Telefono}"  />
                </StackPanel>
                <StackPanel Orientation="Horizontal" Margin="0 10 0 10">
                    <SymbolIcon Symbol="Mail" Margin="10 0 10 0"></SymbolIcon>
                    <TextBlock Text="{Binding Email}"  />
                </StackPanel>
            </StackPanel>

</Grid>
  

Вот как это использовать:

                         <ListView x:Name="listaContatti"
                             IsItemClickEnabled="True" MaxHeight="200"
                             SelectedItem="{Binding ClientiContatti,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
                             ItemsSource="{Binding ListaClientiContatti,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
                            <ListView.ItemTemplate>
                                    <DataTemplate>
                                    <template:ItemTemplateContatti />
                                </DataTemplate>
                            </ListViewItemTemplate>
                        </ListView>
  

Это мой результат:
изображение моего результата

Я хотел бы видеть начало строки, границу синего цвета и две панели стека так, как вы видите в visual studio designer: изображение моего дизайнера

Ответ №1:

Попробуйте установить для HorizontalContentAlignment каждого ListViewItem значение Stretch . Также установите Padding значение 0 , чтобы убрать пробел перед синей полосой.

 <ListView x:Name="listaContatti"
    IsItemClickEnabled="True" MaxHeight="200"
    SelectedItem="{Binding ClientiContatti,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
    ItemsSource="{Binding ListaClientiContatti,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <template:ItemTemplateContatti />
        </DataTemplate>
    </ListView.ItemTemplate>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            <Setter Property="Padding" Value="0" />
        </Style>
    </ListView.ItemContainerStyle>
</ListView>
  

Комментарии:

1. спасибо, похоже, также работает, однако тег border не отображается в начале, но на несколько пикселей дальше, почему?

2. Я отредактировал свой ответ, добавив дополнительную информацию об этом.