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模型;这绝对是我想要做的事情,但作为一名初学者,我觉得让一些事情先做事情,然后在需要的地方改进一下,当你获得一个工作基地后,会更有趣。 –