1

我正在尝试尽可能多地使用数据绑定来创建我的 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 中是否有仅使用数据绑定的解决方案,或者我是否必须通过迭代元素并放置它们以编程方式进行?

4

1 回答 1

1

总有解决办法的,只要找到合适的就行了!

我建议您像这样玩 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 来定义它们的显示方式

于 2012-05-16T02:05:51.853 回答