2011-12-15 62 views
1

在我的MainPage上是一個綁定到位置列表的數據透視表。每個位置都有一個綁定到內部ListBox的屬性「RoomNumber」。DataBound支持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> 

在運行時,這導致在具有P​​ivotItem對於每個位置和在嵌套列表框所有相應RoomNumbers。完善!

但是當我在設計時嘗試添加一些示例數據時,我無法獲取它來顯示數據。 我添加了混合的命名空間中的的PhoneApplicationPage和設計時-的datacontext:

xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
mc:Ignorable="d" 
d:DataContext="{d:DesignData SampleData/MainViewModelSampleData.xaml}" 

樣本數據包含嵌套的房間有些地方,但房間沒有顯示出來。 顯示了pivot-headers,所以它根本不會出錯。但是內部的ListBox是空的,所以我不能直觀地設計ListBoxItems。

首先,我認爲它與沒有顯示第一頁的樞軸itemindex bug有關。但是將xaml中的itemindex設置爲0或1並不能解決問題。

我也嘗試了一些不同的方式來綁定數據,但沒有任何工作。因此,經過數小時的嘗試和搜索網絡,我希望有人有一個想法。

一些圖片的標題說明:

  • 我不知道它的問題,但最終我想我會用列表框

  • 的SL-工具包LongListSelector,而不是因爲它已經工作在運行時很好我更喜歡XAML專用的解決方案,因爲我寧願不改變我的ViewModel來讓設計師工作。但如果沒有選擇,我會改變視圖模型。

編輯: 抱歉,應該補充用過的樣本數據。這是:

<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> 

這縮短了。有更多的地點和房間有一些孩子節點。我還從地點和房間中刪除了一些屬性,以使其更具可讀性。

僅供參考:沒有帶紅色下劃線的節點/屬性,所以我假設沒有錯別字。

+0

如何創建您的樣本數據?這裏面是什麼? – 2011-12-15 14:54:08

回答

0

好吧,它現在有效。

問題是,我不確定究竟是什麼修復了問題。但這裏是我所做的:

  • 由於提出這個問題,我重組了項目。我沒有更改類,示例數據和xaml。但我把它全部移到了類庫中,而不是電話應用程序。

  • 創建新的類庫後,我添加了Silverlight工具包與NuGet,所以我得到了比以前使用的工具包的更新版本。

  • 在ViewModel的構造函數中,我加了這個:this.Locations = new ObservableCollection<Location>();
    沒有這行,它的重現性不起作用。但它根本不起作用。重組之前,我看到了標題,只有內容丟失。當我現在刪除這一行時,標題也丟失了。

我認爲它是結合了最新的工具包與創建在構造函數中的ObservableCollection。但我不確定