2009-06-01 5 views
5

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

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> 

Не уверен, что я делаю неправильно здесь. Любая информация будет принята с благодарностью. Благодаря!

ответ

9

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

<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 бит, как у меня нет никаких данных, чтобы проверить это с ...

Edit: в дополнение к ссылке Беа, есть некоторые хорошие вещи по Dr WPF.

+0

Это сделало !!! Спасибо за ответ, и я добавил в закладки также сайт Bea. Всем спасибо! Это начинало меня бить совсем немного, LOL. –

3

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

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

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

Edit:

Еще раз Bea проступает с ответом/например!

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

+0

+1 для ссылки Bea. –

 Смежные вопросы

  • Нет связанных вопросов^_^