2014-03-10 3 views
0

Я использовал и знаком с LongListSelector, имеющим определенный шаблон элемента для всех перечисленных элементов.LongListSelector с элементами переменной высоты и содержания

Теперь я пытаюсь реализовать более сложный LongListSelector, где добавленные элементы не будут иметь фиксированную высоту/конкретный контент. Может быть несколько текстовых блоков и изображений в одном случае и 2 раза те же самые элементы в другом (это набор элементов, который появляется 1,2 или 3 раза на элемент).

Примечание: Я использую ObservableCollection, с которым я соединяюсь с LongListSelector.

ObservableCollection<RouteInformation> Routes = new ObservableCollection<RouteInformation>(); 

     public RoutePage() 
     { 
      InitializeComponent(); 

      RoutesLongListSelector.ItemsSource = Routes; 
     } 

и я заполнить список, потянув данных из базы данных и, в конце концов, добавив их с

Routes.Add(new RouteInformation(..., ...)); 

Любые предложения?

+0

Что является критерием для макета? Как узнать, какой шаблон вам нужен для какого элемента? Есть вещь, называемая селектором шаблонов данных. –

+0

Макет каждого элемента определяется значениями, которые я получаю из вытащенных данных. Может быть 3-строчный макет, возможно 5 или 7. Модель типа, которую я использую (RouteInformation), одинакова для всех случаев. – klitemnistra

+0

Там * есть *, где вы решаете, сколько строк вам нужно, где это? Если вы не можете ответить на это, как может кто-нибудь еще? –

ответ

0

Определение нескольких шаблонов записи ресурсов + страницы:

<phone:PhoneApplicationPage.Resources> 
    <DataTemplate x:Key="ItemTemplate3Line">... 
</phone:PhoneApplicationPage.Resources> 

<LongListSelector x:Name="lls"> 

и в коде позади в зависимости от вашего состояния, выберите шаблон пользовательских данных:

if (...) 
    lls.ItemTemplate = Resources["ItemTemplate3Line"] as DataTemplate;