我正在尝试使用数据绑定尽可能多地创建我的gui。我有收集的频道,也有步骤列表。我所知道的是将这些集合绑定到xaml元素并按以下顺序显示它们:
Channel1 step1 step2 step3 step4
Channel2 step1 step2 step3 step4
我尝试使用嵌套的ItemsControls:
<ItemsControl ItemsSource="{Binding Path=channels}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<ItemsControl ItemsSource="{Binding Path=steps}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<GUI:stepAnalog></GUI:stepAnalog>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
但我所取得的成就就像命令元素一样:
channel1 step1 step2 step3 channel2 step1 step2 step3
或
channel1
step1
step2
step3
channel2
step1
step2
step3
wpf中是否存在仅使用数据绑定的解决方案,还是我必须通过迭代元素并将其放置来以编程方式执行此操作?
答案 0 :(得分:1)
Theres总是一个解决方案,只需要找到合适的解决方案!
我建议您使用ItemsControls的ItemsPanel,如下所示:
<ItemsControl ItemsSource="{Binding Path=channels}">
<!-- This specifies that the items in the top level items control should be stacked vertically-->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Path=steps}">
<!-- This specifies that the items in the second level items control should be stacked horizontally-->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<GUI:stepAnalog></GUI:stepAnalog>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
这允许您指定项目控件中的项目的布局方式,您仍然可以使用DataTemplate来定义它们的显示方式