Элементы управляют, чтобы расположить элементы горизонтально и заставить детей вытягиваться до ширины стека - PullRequest
2 голосов
/ 24 февраля 2012

Я создаю элемент управления, похожий на сетку, и использую элемент управления элементами для представления строки, а другой элемент управления для объединения этих строк. В ряд, элементы расположены горизонтально, поэтому я использую StackPanel с горизонтальной ориентацией, например:

<ItemsControl ItemsSource="{Binding CellRows}" Grid.Row="1" Grid.Column="1" Margin ="20">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ItemsControl ItemsSource="{Binding}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal" Background="Cyan"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <TextBox Text="{Binding Content}"/>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

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

Я читал, что это также стандартное поведение стековой панели.

Мои вопросы:

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

2) Есть ли еще какие-либо для представления 2D данных? (Я работаю с Silverlight 4 MVVM)

Заранее спасибо.

1 Ответ

2 голосов
/ 24 февраля 2012

Проверьте элемент управления UniformGrid для SL здесь: http://www.jeff.wilcox.name/2009/01/uniform-grid/

Определение UniformGrid из MSDN: «Предоставляет способ упорядочить содержимое в сетке, где все ячейки в сетке имеют одинаковыеsize. "

Если вы хотите, чтобы это было привязано к наблюдаемой коллекции, просто поместите UniformGrid в ItemsPanelTemplate ItemsControl, поскольку UniformGrid расширяет Panel.

...