2014-11-07 5 views
0

У меня есть ученик класса с названием «имя» и «образование». Я заполнил ObservableCollection студентами и установил ItemSource gridview для этого ObservableCollection.Отображение двух свойств в одном контейнере товаров с помощью WinRT

Теперь я знаю, что могу установить displaymemberpath для отображения свойства в gridview. Однако я пытаюсь получить оба свойства в том же gridview с помощью ItemTemplate. Я хочу, чтобы они были горизонтально совмещены со свойствами друг над другом. Как это:

Student1 ...... Student2 ....... Student3 ...... Student4 ....... Student5

Образование1 ... Образование2 ... Education3 ... Образование4 ... образования5

Я попытался следующие:

<Style TargetType="GridView"> 
    <Setter Property="ItemsPanel"> 
     <Setter.Value> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal" VerticalAlignment="Center"/> 
      </ItemsPanelTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Это выравнивает класс по горизонтали следующим образом, но я не в состоянии установить DisplayMemberPath в виде StackPanel:

App.Stud ... App.Student ... App.Student ... App.Student ... App.Student

Может ли кто-нибудь дать мне совет, как я могу достичь примера выше, с помощью контейнера ItemTemplate и One?

P.S. Я знаю, что это можно легко выполнить с помощью двух отдельных контейнеров/стековых панелей или другими способами. Но я пытаюсь узнать больше о ItemTemplates, поэтому я хочу, чтобы один контейнер с ItemTemplate отображал два свойства.

+0

Как выглядит ваш выход? – bit

+0

@ бит см. Мой вопрос, я вставил вывод – Sliver2009

+0

Вы пытались установить ориентацию панели стека на вертикальную? – bit

ответ

1

Как вы, вероятно, видите - DisplayMemberPath может быть настроено только на одно свойство, поэтому, если вам нужно отобразить что-то большее, чем просто очень простая строка текста, вам может понадобиться установить ItemTemplate.

<GridView ...> 
    <GridView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding Name}"/> 
       <TextBlock Text="{Binding Education}"/> 
      </StackPanel> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 

Конечно, вы можете также иметь одну строковое свойство с двумя строками текста, разделенного с "\r\n" - которые могли бы работать в очень простых случаях.

+0

Спасибо за решение xaml, теперь я могу преобразовать его в стиль/ресурс! Но это делается через секунду. – Sliver2009

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