3

我遇到了動態添加數據透視圖到模板化和數據綁定數據透視表的麻煩。數據綁定+動態數據透視表

正在使用的類(有點簡化以便快速理解);

class Menu { 
    string Name 
    List<Dish> Dishes_1; 
    List<Dish> Dishes_2; 
    List<Dish> Dishes_3;  
} 
class Dish { 
    string Description 
    string Price;  
} 

我想使用透視來顯示菜單對象列表。我根據該列表中的項目數量動態創建PivotItems。因此每個PivotElement應該遵循相同的佈局並且行爲相同。佈局模板和數據綁定在.xaml中完成,如下所示:

<phone:Pivot x:Name="Mainpivot"> 
     <phone:Pivot.HeaderTemplate> 
      <DataTemplate> 
      <TextBlock Text="{Binding Name}" /> 
      </DataTemplate> 
     </phone:Pivot.HeaderTemplate>  
     <phone:Pivot.ItemTemplate> 
      <DataTemplate> 
       <ListBox> 

        <TextBlock Text="Dishes_1"/> 
        <ListBox ItemsSource="{Binding Dishes_1}"> 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <Grid> 
            <TextBlock Text="{Binding Description}"/> 
            <TextBlock Text="{Binding Price}"/> 
           </Grid> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
        </ListBox> 

        // ... 
        // this is repeated 3 times; 
        //a textblock and listbox per List<Dishes> in the Menu-class 

       </ListBox> 
      </DataTemplate> 
     </phone:Pivot.ItemTemplate> 
    </phone:Pivot> 

我在填充德cs文件的樞軸改爲:

foreach (Menu m in List_Menus) { 
    PivotItem p = new PivotItem(); 
    p.DataContext = m; 
    Mainpivot.Items.Add(p); 
} 

當我設置的DataContext作爲一個菜單對象,數據綁定(通過XAML)不應該要求更多的代碼這裏(所以我認爲?)。

現在的問題是;它不起作用...

通過使用調試器查看,看起來創建的PivotItem不像在Mainpivot中所定義的模板行爲(或者我認爲)。看看Mainpivot確實顯示PivotItems已被添加,但就是這樣,我相信它們只是空的全空透視項目。在模擬器中執行時,它只顯示一個空的Pivot。

有什麼想法?

// PS:我沒有使用ViewModels,因爲我發現它們讓人很迷惑(作爲初學者)的概念。我認爲這與問題沒有任何關係?

回答

4

這裏有一些東西。首先,爲了您的工作綁定,您需要使用屬性而不是字段。

public class Menu { 
    public string Name {get;set;} 
    public List<Dish> Dishes_1 { get; set; } 
    public List<Dish> Dishes_2 { get; set; } 
    public List<Dish> Dishes_3 { get; set; } 
} 

public class Dish { 
    public string Description { get; set; } 
    public string Price { get; set; }  
} 

下一頁,而不是你的foreach循環添加項目到支點,剛剛成立的項目來源:

Mainpivot.ItemsSource = List_Menus; 

順便說一句 - 你真的應該考慮學習MVVM。這是值得的。

+0

更改ItemsSource而不是foreach循環做了這項工作,謝謝!該課程已經完全按照您輸入的內容輸入,但忽略了一些信息,認爲它會更易於閱讀。謝謝!至於MVVM模型;這絕對是我想要做的事情,但作爲一名初學者,我覺得讓一些事情先做事情,然後在需要的地方改進一下,當你獲得一個工作基地後,會更有趣。 –