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 に答える