Шаблон данных 100% ширины в пользовательском элементе управления Silverlight

У меня есть собственный элемент управления Silverlight, расширяющий Panel. Мне требуется, чтобы шаблон данных (корневой узел - это панель стека) занимал 100% доступной ширины - однако в настоящее время панель стека заполняется только до ширины текста.

Переопределение аранжировки в моем распоряжении:

protected override Size MeasureOverride(Size availableSize)
{
    foreach (FrameworkElement element in Children)
    {
        element.Measure(new Size(availableSize.Width, availableSize.Height));
    }
    return base.MeasureOverride(availableSize);
}

И мой шаблон:

<DataTemplate x:Name="itemTemplate">
    <StackPanel Background="Aqua" HorizontalAlignment="Stretch">
        <TextBlock TextWrapping="Wrap" Text="{Binding Name}" HorizontalAlignment="Stretch"/>
    </StackPanel>
 </DataTemplate>

Любая помощь будет принята с благодарностью.

Ответов (2)

Я бы сказал, вам следует рассмотреть возможность наследования от ItemsControl вместо Panel. Сгенерированные элементы в ItemsControl по умолчанию занимают всю ширину.

Добавьте Width = "*" в StackPanel

К сожалению, это работает в Grid Row, определения столбцов.

Почему вы все равно переопределяете код меры? Автоматическое поведение Width заключается в использовании доступного пространства. Точно так же ширина на панели является стандартным свойством FrameworkElement Width.