Вопрос

Я пытаюсь получить 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>
Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top