Pergunta

Então, eu tenho um StackPanel que estou usando como um ContentControl. Eu tenho um lugar onde eu quero botões para ser gerados com base em dados que estou ligando, e isso é tudo bom trabalho, mas eu quero os botões para ser colocado para fora horizontalmente, não verticalmente, como é que está acontecendo atualmente. Aqui está uma imagem:

text alt

E aqui está o código da minha descrição 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>

Não sei o que estou fazendo de errado aqui. Qualquer informação seria muito apreciada. Obrigado!

Foi útil?

Solução

Eu diria que parece que o ItemsControl é o que está exibindo os botões na vertical. se você quiser que os botões no ItemsControl ser horizontal, então você precisa do StackPanel estar no ItemsControl ItemsPanelTemplate, não o contrário, como o que você tem no seu código:

<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>

Eu poderia ser um pouco errado na bit ItemsControl.ItemsPanel como eu não tenho quaisquer dados para testá-lo com ...

Editar: Além da referência Bea, há algumas coisas boas por Dr WPF .

Outras dicas

Eu não consigo ver sua imagem (é bloqueada pelo firewall da minha empresa), mas aqui vou eu de qualquer maneira ...

Seu 'Orientação = 'horizontal'' provavelmente está funcionando como deveria: ele contém apenas um elemento filho, um ItemsControl. Em vez disso, tente fazer um ControlTemplate para o seu ItemsControl, onde o ControlTemplate contém um StackPanel com Orientation = "horizontal".

Espero que isso ajude!

Editar:

Mais uma vez, Bea vem através de uma resposta / example!

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top