2013-12-01 8 views
1

Я пытаюсь для отображения ListView детали через RectangleBox (что мне удалось сделать с помощью ControlTemplate)WPF ListView Display

Моя проблема заключается в том, как RectangleBox организуются на окне. Я хотел бы отображать столько, сколько могу, на одной строке (в зависимости от ширины окна), и когда одна строка заполнена, начните новую и так далее. Организация будет обновляться в зависимости от ширины окна после каждого изменения размера:

Example

Это может дать лучшее представление о том, что я хочу, вы видите каждый RectangleBox (Маркированный 1,2 ...) организации на окно меняется в зависимости от его ширины.

Вот мой текущий код в моем MainWindow XAML:

<ListView Name="PlayerList" ItemsSource="{Binding Players}"> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid/> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
</ListView> 

Имея следующий стиль применяется:

<Style TargetType="ListViewItem"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ListViewItem}"> 
       <GroupBox Header="{Binding Name}" Width="250" Height="125" Name="Disp" HorizontalAlignment="Left"> 
        <GroupBox.HeaderTemplate> 
          <DataTemplate> 
           <StackPanel Orientation="Horizontal"> 
            <TextBlock Text="{Binding}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5,0,0,0" TextAlignment="Right"></TextBlock> 
           </StackPanel> 
          </DataTemplate> 
         </GroupBox.HeaderTemplate> 
         <StackPanel Orientation="Vertical"> 
          <TextBlock Text="{Binding Char}"/> 
          <TextBlock Text="{Binding Item}"/> 
         </StackPanel> 
        </GroupBox> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Но до сих пор, UniformGrid была просто failled попытка, я был оглядываясь по сторонам, но не мог найти решение. Надеюсь, это был просто я немой и пропустил что-то очевидное. D:

Спасибо за помощь.

+0

Я действительно не понимаю вашу контрольную таблицу для ListViewItems. Не могли бы вы предоставить некоторые сведения о типе элемента данных и о том, как его следует визуализировать? В противном случае UniformGrid кажется правильным подходом, и он должен работать так, как вы его использовали. – Clemens

+0

Будет ли работать WrapPanel? – Chris

+0

@Clemens UniformGrid имеет некоторые особенности макета, которые не соответствовали тому, что я хотел, путем различения элементов по-разному в зависимости от их числа и тому подобного. Для ControlTemplate, не зная, что вы хотели видеть, я просто перегрузил стиль при реализации RectangleBox (я сделал это, чтобы удалить эффект выделения) – MagiKruiser

ответ

0

Благодарим за внимание.

WrapPanel был действительно правильный путь, просто не думать об этом: P мне просто нужно добавить следующее свойство:

ScrollViewer.HorizontalScrollBarVisibility="Disabled" 

К моему ListView, чтобы избежать всех элементов в стек на одна линия.