Silverlight: установите ширину элементов в ItemsControl, чтобы растянуть - PullRequest
3 голосов
/ 22 марта 2010

У меня есть ItemsControl, который заполняет сверху вниз, но я не могу заставить его дочерние элементы занимать всю ширину ItemsControl:

alt text

Мне нужно растянуть зеленые биты, чтобы заполнить ширину элемента управления (как показано синими битами).

Я пробовал что-то вроде установки свойства HorizontalAlignment элемента шаблона на Stretch, и я даже пытался связать его свойство Width с ItemsControl Width, но ни один из них не работал.

Должно быть прямолинейно, но я просто не могу понять ...

Редактировать: вот ItemTemplate (все это ItemTemplate, который сам содержит ItemsControl, который связан со списком дочерних объектов):

<DataTemplate>
    <Border CornerRadius="5" Background="#ddd">
        <StackPanel>
            <TextBlock Text="{Binding Name}" FontSize="18" Foreground="#bbb"/>
            <ItemsControl ItemsSource="{Binding PlugIns}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel HorizontalAlignment="Stretch" />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Margin="10,0,10,10" Tag="{Binding}" 
                                MouseEnter="StackPanel_MouseEnter">
                            <Border Child="{Binding Icon}" />
                            <TextBlock Text="{Binding Name}" />
                        </StackPanel>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </StackPanel>
    </Border>
</DataTemplate>

Ответы [ 2 ]

3 голосов
/ 22 марта 2010

Вам необходимо настроить ListBoxItem HorizontalContentAlignment, это можно сделать с помощью объекта Style в ListBox ItemContainerStyle следующим образом: -

 <ListBox ....>
  <ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
      <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
  </ListBox.ItemContainerStyle>
1 голос
/ 25 марта 2010

ОК, так как я продолжал собирать приложение, я понял, как решить эту проблему. По сути, когда я изменил шаблон ItemsControl для поддержки прокрутки, элементы были заполнены по горизонтали:)

<ItemsControl>
    <ItemsControl.Template>
        <ControlTemplate>
            <ScrollViewer Padding="{TemplateBinding Padding}">
                <ItemsPresenter />
            </ScrollViewer>
        </ControlTemplate>
    </ItemsControl.Template>
    ...
</ItemsControl>
...