Какой код xaml, чтобы получить этот макет? - PullRequest
1 голос
/ 28 февраля 2011

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

  • , если имеется только один дочерний элемент управления, он не будет охватывать весь родительский элемент управления, но его ширина будет установлена ​​на максимальную ширину.
  • После добавления дочерних элементов управления в определенной точке сумма их максимальной ширины (которая одинакова для каждого дочернего элемента управления между прочим) будет больше родительской ширины.В этом случае общая ширина должна быть разделена на количество детей, и каждый ребенок получит этот результат.

Поскольку родительский элемент управления должен быть привязан к коллекции, я начал писать это:

<ItemsControl Margin="10" Height="200" ItemsSource="{Binding MyCollection}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ChildShape />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Я быстро понял, что StackPanel - это не то, что мне нужно.

Конечная цель - создать хорошие анимации при добавлении или удалении дочернего элемента (другие дочерние элементы должны скользить и изменять свой размергладко.

Поскольку я новичок в Silverlight, я не вижу, какую панель (пользовательскую или нет?) мне следует использовать или как я могу добиться того, что я описал.

Ответы [ 3 ]

1 голос
/ 01 марта 2011

Вы можете поэкспериментировать с

 <UniformGrid Rows="1"> </UniformGrid>

для замены StackPanel.Если есть SilverLight, я говорю из WPF.

1 голос
/ 01 марта 2011

+ 1 для идеи UniformGrid.

Для анимации, когда элементы добавляются или удаляются, взгляните на эту презентацию / MIX презентацию.

http://blogs.msdn.com/b/expression/archive/2010/03/16/dynamic-layout-and-transitions-in-expression-blend-4.aspx

0 голосов
/ 01 марта 2011

Похоже, вы можете использовать Wrap Panel. Джесси Либерти имеет хороший пост в блоге, объясняющий, как его использовать.

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