0

私はListViewそれを使用してGridViewデータのいくつかの列を表示しています。

ItemControl2つの列には、各セルの小さなコレクションを表示するための'sを含むセルテンプレートがあります。

私が抱えている問題は、sの垂直方向のサイズはItemControl、異なるセルにあるため、まったく接続されておらず、したがって、それらが整列していないことです。

例:(これは親リストビューの1行であることに注意してください)

これまでのXAML:

<ListView Margin="6,6,6,0" ItemsSource="{Binding Controllers}">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem" >
            <Setter Property="VerticalContentAlignment" Value="Top" />
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView>

         <!-- snip other columns -->

        <GridViewColumn Header="Mode">
             <GridViewColumn.CellTemplate>
                 <DataTemplate>
                    <ItemsControl ItemsSource="{Binding Modes}" DisplayMemberPath="Name"/>   
                 </DataTemplate>
             </GridViewColumn.CellTemplate>
        </GridViewColumn>

        <GridViewColumn Header="Parameters">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <ItemsControl ItemsSource="{Binding Modes}">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock  Text="Blah:" Margin="5,0"/>
                                    <ComboBox>
                                        <ComboBoxItem>Hello</ComboBoxItem>
                                    </ComboBox>
                                 </StackPanel>
                             </DataTemplate>
                         </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
    </GridView>
    </ListView.View>
</ListView>

私が最初に考えたのは、のとしてグリッドを使用するItemsPanelことItemsControlsでした。そのため、行でSharedSizeScopeを使用してそれらを並べることができました。ただし、ItemsControlによって動的に作成されたアイテムを特定のグリッド行に割り当てる方法がわかりません。

誰かがより良い解決策を提案できますか?

4

1 に答える 1

0

ListView.ItemContainerStyle.VerticalContentAlignmentStretch に設定しUniformGridItemsControlパネルに を使用することで、これを修正できました。

各セルは、最大のセルに一致するように垂直方向に引き伸ばされ、UniformGridその垂直方向のサイズを各アイテムに均等に分割します。

例えば

<GridViewColumn Header="Mode">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <ItemsControl ItemsSource="{Binding Modes}" DisplayMemberPath="Name">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <UniformGrid Columns="1"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>
于 2012-04-05T12:47:13.383 に答える