Использование StackPanel в качестве ContentControl (WPF)
-
06-09-2019 - |
Вопрос
Итак, у меня есть StackPanel, которую я использую в качестве ContentControl.У меня есть место, где я хочу, чтобы кнопки генерировались на основе данных, к которым я привязываюсь, и все это работает хорошо, но я хочу, чтобы кнопки располагались горизонтально, а не вертикально, как это происходит в данный момент.Вот скриншот:
А вот код из моего описания 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".
Надеюсь, это поможет!
Редактировать:
И снова Беа приходит с ответом / примером!