C# 按钮应在ItemsControl.ItemTemplate中水平对齐
我尝试遵循Rachel Lim关于“SingleWindow”应用程序的教程: . 到目前为止,一切正常,但: 按钮是垂直对齐的,我希望它们是水平的!我已经厌倦了以下几点:C# 按钮应在ItemsControl.ItemTemplate中水平对齐,c#,wpf,C#,Wpf,我尝试遵循Rachel Lim关于“SingleWindow”应用程序的教程: . 到目前为止,一切正常,但: 按钮是垂直对齐的,我希望它们是水平的!我已经厌倦了以下几点: <DockPanel DataContext="{StaticResource ResourceKey=MainFrameViewModel}"> <Border DockPanel.Dock="Top" BorderBrush="Black" BorderThickness="2">
<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>
正如你所看到的,我把所有的东西从边界放到一个水平方向的StackPanel中,但它不起作用。我尝试了stackpanel的每个位置,但没有成功!按钮总是垂直的
非常感谢 ItemsControl内部使用另一个面板(默认情况下,它是垂直方向的
虚拟化StackPanel
)-您可以通过ItemsControl.ItemPanel
属性更改此设置。这就是为什么ItemsControl
周围的StackPanel
不会影响按钮的对齐。您应该使用以下代码:
<DockPanel DataContext="{StaticResource ResourceKey=MainFrameViewModel}">
<Border DockPanel.Dock="Top" BorderBrush="Black" BorderThickness="2">
<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.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Border>
</DockPanel>
如果您想了解更多关于ItemsControl的信息,我建议您阅读WPF博士的一系列博文“ItemsControl:A到Z”:
如果您还有任何问题,请随时提问。Hey feO2x,非常感谢您的快速回答、良好的解释和链接!你让我度过了美好的夜晚;)你的夜晚…:-)