На моей главной странице есть пивот, связанный со списком мест.Каждое местоположение имеет свойство RoomNumber, которое связано с внутренним ListBox.
Это XAML:
<controls:Pivot x:Name="mainPivot" ItemsSource="{Binding Locations}" Title="App-Title">
<controls:Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding LocationName}" />
</DataTemplate>
</controls:Pivot.HeaderTemplate>
<controls:Pivot.ItemTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding Path=Rooms}">
<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem>
<TextBlock Text="{Binding RoomNumber}" />
</ListBoxItem>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</controls:Pivot.ItemTemplate>
</controls:Pivot>
Во время выполнения это приводит к наличию PivotItem для каждого местоположения и всехсоответствующие номера комнат во вложенном ListBox.Отлично!
Но когда я пытаюсь добавить пример данных во время разработки, я не могу получить их для отображения данных.Я добавил Blend-namespace к PhoneApplicationPage и designtime-datacontext:
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DataContext="{d:DesignData SampleData/MainViewModelSampleData.xaml}"
Образцы данных содержат некоторые местоположения с вложенными комнатами, но комнаты не отображаются.Сводные заголовки показаны, поэтому они не могут быть неправильными вообще.Но внутренний ListBox пуст, так что я не могу визуально спроектировать ListBoxItems.
Сначала я подумал, что это как-то связано с ошибкой pivots itemindex, не показывающей первую страницу.Но установка itemindex в xaml на 0 или 1 не помогает.
Я также пробовал несколько разных способов привязки данных, но ничего не работает.Так что после нескольких часов попыток и поиска в Интернете я надеюсь, что у кого-то есть идея.
некоторые sidenotes:
Я не знаю, имеет ли это значение, но в конце концовЯ думаю, что я буду использовать SL-Toolkits LongListSelector вместо ListBox
Поскольку он уже отлично работает во время выполнения, я бы предпочел решение только для XAML, потому что я бы предпочел неизменить мою ViewModel только для того, чтобы дизайнер работал.Но если выбора нет, я все же изменю модель представления.
edit: извините, следовало добавить использованные данные примера.вот оно:
<local:MainViewModel
... some namespaces ...
>
<local:MainViewModel.Locations>
<PCSE:Location Id="1" LocationName="a name">
<PCSE:Location.Rooms>
<PCSE:Room Id="1" Date="10.08.2011" RoomNumber="1">
</PCSE:Room>
<PCSE:Room Id="2" Date="11.08.2011" RoomNumber="66">
</PCSE:Room>
<PCSE:Room Id="3" Date="12.08.2011" RoomNumber="45">
</PCSE:Room>
</PCSE:Location.Rooms>
</PCSE:Location>
... some more locations ...
</local:MainViewModel.Locations>
</local:MainViewModel>
Это сокращено.Есть больше мест, и в комнатах есть несколько дочерних узлов.Я также удалил некоторые атрибуты из локаций, а также из комнат, чтобы сделать его более читабельным.
К вашему сведению: нет подчеркнутого красным узла / атрибута, поэтому я предполагаю, что опечаток нет.