Холст как ListBox ItemTemplate - PullRequest
       5

Холст как ListBox ItemTemplate

3 голосов
/ 22 декабря 2011

Моя среда - Windows Phone 7.1.

У меня есть следующий код:

     <ListBox  ItemsSource="{Binding Path=Items}">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas Background="Black" />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Canvas  Width="200" Height="400"
                    Canvas.Top="400"> <====== This is not working
                   ... Some content ...
                </Canvas>
            </DataTemplate>
        </ListBox.ItemTemplate>

Существует ListBox с Canvas как ItemsPanel.

Сам ListBoxItems также имеет тип Canvas. Для ListBoxItems, который я установил Canvas.Top =400, я ожидаю, что элементы будут отображаться со смещением 400 в ItemsPanel.

К сожалению, это не работает, элементы отображаются со смещением 0, как показано на этом рисунке (ItemsPanel черный, цветной прямоугольник - элемент списка):

enter image description here

Почему ListBoxItems не отображается со смещением 400?

Ответы [ 2 ]

4 голосов
/ 22 декабря 2011

Вы устанавливаете Canvas.Top для содержимого ListBoxItems, а не для фактических элементов

При использовании холста в качестве панели элементов вы должны помнить, что ваши объекты с датой обернуты в ListboxItems

ListBox
  Canvas <- your itemtemplate
    ListBoxItem
      Canvas <- your datatemplate

решение:

<ListBox.ItemContainerStyle>
  <Style TargetType="ListBoxItem">
     <Setter Property="Canvas.Top" Value="400"/>
  </Style>
</ListBox.ItemContainerStyle>
2 голосов
/ 22 декабря 2011

Попробуйте добавить это к своему ListBox

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</ListBox.ItemContainerStyle>

Поскольку вы видите, черная область - это ListBox, но не ваша ListBoxItem.Из-за «общеизвестной ошибки», если мы все еще можем назвать ее так, ListBoxItem не растягивается, если вы не добавите код выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...