按钮应在ItemsControl.ItemTemplate中水平对齐

时间:2014-08-26 20:08:26

标签: c# wpf

我尝试按照Rachel Lim关于“单一窗口”应用程序的教程: Click for tutorial 。到目前为止,一切正常,但是:

按钮垂直对齐,我希望它们是水平的!我已经厌倦了以下事情:

<DockPanel DataContext="{StaticResource ResourceKey=MainFrameViewModel}">
    <Border DockPanel.Dock="Top" BorderBrush="Black" BorderThickness="2">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
            <ItemsControl ItemsSource="{Binding PageViewModels}" >
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Button Content="{Binding Name}"
                            Command="{Binding DataContext.ChangePageCommand, RelativeSource={RelativeSource  AncestorType= DockPanel}}"
                            CommandParameter="{Binding }"
                            Width="200"
                            />

                </DataTemplate>
            </ItemsControl.ItemTemplate>

        </ItemsControl>
        </StackPanel>
    </Border>

正如您所看到的,我将所有来自Border的东西放入一个水平方向的StackPanel但它不起作用。我已经尝试过堆叠板的每个位置都没有成功!按钮始终是垂直的

提前多多谢谢!

1 个答案:

答案 0 :(得分:1)

ItemsControl在内部使用另一个面板(默认情况下,它是一个垂直方向的VirtualizingStackPanel) - 您可以通过ItemsControl.ItemPanel属性进行更改。这就是围绕StackPanel的{​​{1}}不会影响按钮对齐的原因。您应该使用以下代码:

ItemsControl

如果您想了解有关ItemsControls的更多信息,我会推荐一系列精彩的博客文章&#34; ItemsControl:A to Z&#34; WPF博士:http://drwpf.com/blog/itemscontrol-a-to-z/

如果您有任何其他问题,请随时提出。