WPF ItemsPanelTemplate не работает - PullRequest
       46

WPF ItemsPanelTemplate не работает

1 голос
/ 02 декабря 2009

Я пытаюсь заставить ItemsPanelTemplate работать на ListBox. ListBox используется в DataTemplate, и ни один из моих неявных стилей ListBox не перекрывает визуальный стиль по умолчанию. По какой-то причине ItemsPanelTemplate, который я указываю для элемента управления (a WrapPanel), игнорируется и вместо него используется StackPanel.

Это весь шаблон, я могу только предположить, что мне чего-то не хватает, что является причиной этого.

<DataTemplate x:Key="GroupLargeIconsTemplate" DataType="{x:Type Core:IGroup}">
    <ListBox ItemsSource="{Binding Children}" OverridesDefaultStyle="True">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel HorizontalAlignment="Left" VerticalAlignment="Top" IsItemsHost="True"  ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto"
                           Width="{Binding (FrameworkElement.ActualWidth), RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}" />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <DataTemplate.Resources>
                    <conv:IconConverter x:Key="IconConverter"/>
                </DataTemplate.Resources>
                <StackPanel Margin="2" Width="100" Height="140">
                    <Image Source="{Binding Icon,Converter={StaticResource IconConverter},ConverterParameter=96}"/>
                    <TextBlock Text="{Binding Name}" TextWrapping="Wrap" TextTrimming="CharacterEllipsis" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</DataTemplate>

Ответы [ 2 ]

1 голос
/ 02 декабря 2009

Я предполагаю, что свойство width в WrapPanel заставляет его работать как панель стека.

0 голосов
/ 09 июля 2012

Странно, шаблон управления не должен переопределять явно указанные значения, скорее мне приходит в голову противоположный сценарий ... То есть, если шаблон элемента управления не предоставляет панель с IsItemsHost, установленным в значение true. Тогда ItemsPanel игнорируется. Который, вероятно, ваш случай.

...