我有以下datatemplate:
<ItemsControl x:Name="Groups" ItemsSource="{Binding Groups}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="GroupStackPanel" Orientation="Horizontal">
<GroupBox Header="{Binding Path=GroupName}">
<ItemsControl ItemsSource="{Binding Buttons}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="BtnStackPanel" Orientation="Horizontal">
<Button Content="{Binding Path=LabelString}"
Command="{Binding Path=ButtonCommand}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</GroupBox>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这包括此组中的一些ButtonGroups和Buttons。
类组包含字符串属性&#34; GroupName&#34;和一个ObservableCollection-property&#34; Buttons&#34;。按钮和组的分配工作正常。
所以这是我的问题:我想在 dockpanel 中的 ribbontab 中添加这些buttongroup。但是对齐或方向是错误的,因此按钮是一个在另一个之下而不是彼此相邻。 有谁知道我的代码有什么问题?
答案 0 :(得分:2)
目前,您正在使用水平方向的Stackpanel
,这是正确的想法,但Stackpanel
位于错误的位置(ItemTemplate
)。 ItemTemplate
适用于ItemsControl
中的每个项目,这意味着您的XAML代表一组按钮,其中每个按钮都由其自己的StackPanel
包围。
要获得所需效果,您需要将Stackpanel
指定为ItemsPanelTemplate
的{{1}}。
尝试将内部条款更改为:
ItemsControl
修改强>
如果您希望水平显示组和按钮,则可以对两者执行相同的操作:
<ItemsControl ItemsSource="{Binding Buttons}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Path=LabelString}" Command="{Binding Path=ButtonCommand}"/>
</DataTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel x:Name="BtnStackPanel" Orientation="Horizontal">
</ItemsPanelTemplate>
<ItemsControl.ItemsPanel>
</ItemsControl>