Телефон 8 XAML: горизонтальное выравнивание в LongListSelector

У меня есть селектор длинного списка.

Все, что я хочу сделать, это выровнять два элемента внутри ItemTemplate: 1. кнопку справа с заданной фиксированной шириной 2. текстовую панель слева, которая заполняет оставшееся пространство дисплея. Но, к сожалению, текстовая панель не растягивается, а кнопка выравнивается по правому краю текста текстовой панели. :(

Это мой код:

<DataTemplate x:Key="AddrBookItemTemplate">
  <StackPanel Orientation="Horizontal" Name="DummerContainer" HorizontalAlignment="Stretch">
    <TextBlock FontWeight="Bold" Text="{Binding Name}" HorizontalAlignment="Stretch"/>
    <Button HorizontalAlignment="Right" Width="120"/>
  </StackPanel>
</DataTemplate>

а также

<phone:LongListSelector
      HorizontalAlignment="Stretch"
      x:Name="AddrBook"
      JumpListStyle="{StaticResource AddrBookJumpListStyle}"
      Background="Transparent"
      GroupHeaderTemplate="{StaticResource AddrBookGroupHeaderTemplate}"
      ItemTemplate="{StaticResource AddrBookItemTemplate}"
      LayoutMode="List"
      IsGroupingEnabled="true"
      HideEmptyGroups ="true"/>

Итак, это мой вопрос: как правильно выровнять два элемента?


person Christian Graf    schedule 04.03.2013    source источник


Ответы (2)


Это результат использования горизонтального StackPanel...

Используйте Grid, а не StackPanel в своем DataTemplate. Затем вы можете определить ColumnDefinitions для назначения пространства по вашему требованию, т.е.:

  • определите столбец 0 как Width="*" и поместите в него TextBlock
  • определите столбец 1 как Width="Auto", поместите в него Button.
person Paul Annetts    schedule 04.03.2013

Afaik, Stackpanel быстрее, чем Grid. Итак, я решил выяснить корень проблемы. И я нашел его здесь: http://y2bd.me/blog/2013/08/16/fixing-alignment-issues-with-datatemplateselector/

У меня работает нормально.

person Vitalii Vasylenko    schedule 17.03.2014