Содержимое LongListSelector не соответствует родительскому

В настоящее время я работаю над приложением для Windows Phone 8, в котором я использую элемент управления LongListSelector.

Я создал ItemTemplate с Grid в качестве контейнера и некоторыми TextBlock в качестве дочерних элементов. Не знаю почему, но контейнер Grid не соответствует элементу LongListSelector.

Вот код, который я использую. Я использую синий фон для элемента управления LongListSelector и красный для элемента управления Grid, чтобы выделить проблему:

<phone:LongListSelector 
  HorizontalContentAlignment="Stretch"
  HorizontalAlignment="Stretch"
  ItemsSource="{Binding Data}" 
  Background="Aqua"
>
  <phone:LongListSelector.ItemTemplate>
    <DataTemplate>
      <Grid
        HorizontalAlignment="Stretch"
        Background="Red"
      >
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="25" />
          <ColumnDefinition Width="75" />
          <ColumnDefinition Width="*" />
          <ColumnDefinition Width="50" />
          <ColumnDefinition Width="47" />
          <ColumnDefinition Width="100" />
          <ColumnDefinition Width="45" />
          <ColumnDefinition Width="35" />
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Column="0" Style="{StaticResource LineStyle}" Text="{Binding Value}" />
        <TextBlock Grid.Column="1" Style="{StaticResource LineStyle}" Text="{Binding Value}" />
        <TextBlock Grid.Column="2" Style="{StaticResource LineStyle}" Text="{Binding Value}" TextAlignment="Left" TextTrimming="WordEllipsis" />
        <TextBlock Grid.Column="3" Style="{StaticResource LineStyle}" Text="{Binding Value}" />
        <TextBlock Grid.Column="4" Style="{StaticResource LineStyle}" Text="{Binding Value}" />
        <TextBlock Grid.Column="5" Style="{StaticResource LineStyle}" Text="{Binding Value}" />
        <TextBlock Grid.Column="6" Style="{StaticResource LineStyle}" Text="{Binding Value}" />
        <TextBlock Grid.Column="7" Style="{StaticResource LineStyle}" Text="{Binding Value}"  />
      </Grid>
    </DataTemplate>
  </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>

А вот стиль:

<Style x:Key="LineStyle" TargetType="TextBlock">
  <Setter Property="Foreground" Value="Black" />
  <Setter Property="FontSize" Value="13" />
  <Setter Property="Margin" Value="0, 12" />
  <Setter Property="TextAlignment" Value="Center" />
  <Setter Property="HorizontalAlignment" Value="Stretch" />
</Style>

А вот скриншот:

введите здесь описание изображения

Как заставить контейнер Grid (красный) соответствовать своим родителям?

Заранее спасибо за вашу помощь !


person rolandl    schedule 03.10.2015    source источник


Ответы (1)


Я думаю, это связано с вертикальной полосой прокрутки LongListSelector, которая добавляет пробелы справа от элемента управления списком.

Вы можете удалить это правое пространство, добавив следующий фрагмент кода в инициализацию вашей страницы.

MyList.Loaded += (sender, e) => { var scrollBar = ((FrameworkElement)VisualTreeHelper.GetChild(MyList, 0)).FindName("VerticalScrollBar") as ScrollBar; scrollBar.Margin = new Thickness(-10, 0, 0, 0); };

person Guillaume Bonnin    schedule 03.10.2015