2012-04-05 3 views
0

У меня есть ListView, который использует GridView для отображения нескольких столбцов данных.Соответствие вертикальной компоновке в разных ItemsControls

В двух столбцах есть шаблоны ячеек, содержащие ItemControl, чтобы показать небольшую коллекцию в каждой ячейке.

Проблема заключается в том, что вертикальный размер ItemControl s не связан каким-либо образом, поскольку они находятся в разных ячейках, и поэтому они не выстраиваются в линию.

например: (заметьте это ОДИН РЯД в родительском ListView)

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 для конкретных строк Grid.

Может ли кто-нибудь предложить лучшее решение?

+0

Вы имеете в виду 'горизонтальный StackPanel' не 'вертикали'? – Phil

+0

@Phil: Извините, мозговой пердит. Я имел в виду ItemsControl. Редактировал. (Думал о стеке, поскольку ItemsControl стекает по умолчанию по умолчанию) – GazTheDestroyer

+0

Итак, есть один режим для каждого бла? Если да, то почему ваша модель взгляда не выглядит так? – Phil

ответ

0

Управляемый, чтобы исправить это, установив ListView.ItemContainerStyle.VerticalContentAlignment растянуть, а затем с помощью UniformGrid «S для ItemsControl панелей:

Каждая ячейка в настоящее время простирается вертикально, чтобы соответствовать большой ячейки, и используя 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> 

 Смежные вопросы

  • Нет связанных вопросов^_^