Вопрос

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

alt text

А вот код из моего описания ContentTemplate:

<StackPanel Name="wpReleaseButtons" Orientation="Horizontal" Grid.Row="2">
    <ItemsControl IsTabStop="False" ItemsSource="{Binding Path=BranchCommands}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Button Tag="{Binding}" Padding="3">
                     <TextBlock Text="{Binding Path=DisplayValue}" />
                </Button>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</StackPanel>

Не уверен, что я здесь делаю не так.Мы были бы очень признательны за любую информацию.Спасибо!

Это было полезно?

Решение

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

<ItemsControl IsTabStop="False" ItemsSource="{Binding Path=BranchCommands}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Tag="{Binding}" Padding="3">
                <TextBlock Text="{Binding Path=DisplayValue}" />
            </Button>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

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

Редактировать: В дополнение к ссылке Bea, есть несколько хороших материалов от Доктор WPF.

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

Я не могу видеть ваше изображение (оно заблокировано брандмауэром моей компании), но я все равно иду...

Ваша 'Orientation="Горизонтальная"', вероятно, работает так, как и должно быть:он содержит только один дочерний элемент, ItemsControl.Вместо этого попробуйте создать ControlTemplate для вашего ItemsControl, где ControlTemplate содержит StackPanel с ориентацией ="Horizontal".

Надеюсь, это поможет!

Редактировать:

И снова Беа приходит с ответом / примером!

http://bea.stollnitz.com/blog/?p=10

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