2009-04-20 5 views
1

Учитывая следующие категории & подкатегорий:В WPF/Silverlight можно связать с HTML-подобным TableControl?

  1. Animations (Family Guy, Calvin & Hobes, захолустье, Duck Tales, Looney Toons, розовый & Мозг)
  2. Улица Сезам (Оскар, Эрни & Bert, Кермит де Frog, Элмо, Cookie Monster, Гровер)

Я ищу способ сделать это (динамически) и строки и столбцы следующим образом:

 
---------------------------------------------------- 
| Animations          | 
---------------------------------------------------- 
| Family Guy | Calvin & Hobes | The Boondocks  | 
---------------------------------------------------- 
| Duck Tales | Looney Toons | Pinky & The Brain | 
---------------------------------------------------- 
| Sesame Street         | 
---------------------------------------------------- 
| Oscar  | Ernie & Bert | Kermit de Frog | 
---------------------------------------------------- 
| Elmo  | Cookie Monster | Grover   | 
---------------------------------------------------- 

P/S: Мне известны элементы управления списком (ItemsControl, DataGrid, ListView и т. Д.), И они не соответствуют этим критериям.

ответ

2

Что вам нужно сделать, это создать запрос, который каким-то образом группирует ваши элементы по категориям (либо у вас уже есть, либо вы можете использовать linq для создания своей иерархии через группу By ... Into query).

Затем вы можете использовать ItemControl, который связывается с результатом запроса, отображая данные с помощью ItemTemplate, содержащего заголовок, и другой элемент ItemsControl, который имеет ItemPanelTemplate, установленный в WrapPanel или UniformGrid.

Предполагая, что вам удастся получить ваши данные в следующих классах (извините, VB здесь, но C# не будет далеко, что, если вам это нужно):

Public Class Category 

    Private _Name As String 
    Public Property CategoryName() As String 
     Get 
      Return _Name 
     End Get 
     Set(ByVal value As String) 
      _Name = value 
     End Set 
    End Property 

    Private _SubCategories As New List(Of SubCategory) 
    Public Property SubCategories() As List(Of SubCategory) 
     Get 
      Return _SubCategories 
     End Get 
     Set(ByVal value As List(Of SubCategory)) 
      _SubCategories = value 
     End Set 
    End Property 

End Class 

Public Class SubCategory 

    Private _Name As String 
    Public Property SubCategoryName() As String 
     Get 
      Return _Name 
     End Get 
     Set(ByVal value As String) 
      _Name = value 
     End Set 
    End Property 

End Class 



<ItemsControl ItemsSource="{Binding QueryResult}"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Border BorderThickness="1" 
         BorderBrush="Black"> 

        <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto" /> 
         <RowDefinition Height="Auto" />        
        </Grid.RowDefinitions> 
         <Border BorderThickness="1" 
           BorderBrush="Black"> 
          <TextBlock Margin="2" 
             Text="{Binding CategoryName}" /> 
         </Border> 
          <ItemsControl Grid.Row="1" 
              ItemsSource="{Binding SubCategories}"> 
           <ItemsControl.ItemTemplate> 
            <DataTemplate> 
             <Border BorderThickness="1" 
               BorderBrush="Black"> 

              <TextBlock Margin="2" 
                 Text="{Binding SubCategoryName}" /> 
             </Border> 
            </DataTemplate> 
           </ItemsControl.ItemTemplate> 
           <ItemsControl.ItemsPanel> 
            <ItemsPanelTemplate> 
             <UniformGrid Columns="3" /> 
            </ItemsPanelTemplate> 
           </ItemsControl.ItemsPanel> 
          </ItemsControl> 
        </Grid> 
       </Border> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

Это очень грубый шаблон, вы» мне нужно будет возиться с границами, чтобы получить то, что вам нужно, но это сделало бы трюк.

+0

UniformGrid не существует в silverlight, поэтому я использовал этот пользовательский код: http://www.jeff.wilcox.name/2009/01/uniform-grid/ –

+0

Правда, его нет, и я использую тот, который я лежат, потому что это может быть полезно ... –

+0

другая реализация UniformGrid для Silverlight http://jobijoy.blogspot.com/2010/03/uniformgrid-for-silverlight-ported-from.html –

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

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