Tabcontrol contentTemplate позиционирование - PullRequest
0 голосов
/ 04 января 2012

С новым годом всех! спасибо за чтение этого!

У меня проблемы с позиционированием динамического содержимого для шаблона contentTemplate, у меня следующее:

<TabControl ItemsSource="{Binding Cats}">
            <TabControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}" FontSize="16" FontWeight="Bold"></TextBlock>
                </DataTemplate>                
            </TabControl.ItemTemplate>
            <TabControl.ContentTemplate>
                <DataTemplate>
                    <WrapPanel>
                        <ItemsControl ItemsSource="{Binding Products}">
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <Button Content="{Binding Name}" Height="25" Width="100"></Button>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
                    </WrapPanel>
                </DataTemplate>
            </TabControl.ContentTemplate>
        </TabControl>

привязка itemsSource возвращает список категорий и в каждой категории есть свойство, возвращающее список продуктов

enter image description here

В настоящее время отображаются все кнопки, расположенные вертикально, но мне нужны кнопки, чтобы заполнить wrapPanel. Иллюстрация того, что я ищу для шаблона содержимого:

enter image description here

Любые идеи будут высоко оценены!

1 Ответ

2 голосов
/ 04 января 2012

Вам необходимо использовать WrapPanel в качестве шаблона ItemsPanel.См. этот вопрос для справки.По сути, вам нужно добавить этот XAML в:

<ItemsControl ItemsSource="{Binding Products}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Content="{Binding Name}" Height="25" Width="100"></Button>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Примечание : вам не нужно устанавливать свойство Orientation для WrapPanel, оно просто дляради простоты.

...