5

所以我有一个 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>

不知道我在这里做错了什么。任何信息,将不胜感激。谢谢!

4

2 回答 2

9

我会说它看起来像是ItemsControl垂直显示按钮的东西。如果您希望 中的按钮ItemsControl是水平的,那么您需要位于StackPanelItemsControl 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 博士还有一些好东西。

于 2009-06-01T14:03:46.373 回答
3

我看不到你的图片(它被我公司的防火墙阻止了),但无论如何我都走了......

您的 'Orientation="Horizo​​ntal"' 可能正在正常工作:它只包含一个子元素,一个 ItemsControl。相反,请尝试为您的 ItemsControl 创建一个 ControlTemplate,其中 ControlTemplate 包含一个带有 Orientation="Horizo​​ntal" 的 StackPanel。

希望这可以帮助!

编辑:

再一次,Bea 给出了一个答案/例子!

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

于 2009-06-01T13:52:20.327 回答