2010-07-12 43 views
1

我一直在尝试(和失败)使用数据绑定动态创建手风琴。WPF Toolkit Accordion - How To Data Bind

我有一个名为MenuGroups的集合,它包含一个字符串'ModuleName'和一个名为MenuItems的IList集合。我希望将MenuGroups绑定到标题,并将MenuItems绑定到内容。

到目前为止,我所管理的最近使用这个XAML:

<WPFToolkit:Accordion ItemsSource="{Binding MenuGroups}" HorizontalAlignment="Stretch" SelectionMode="OneOrMore"> 
    <WPFToolkit:Accordion.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding ModuleName}" /> 
     </DataTemplate> 
    </WPFToolkit:Accordion.ItemTemplate> 

    <WPFToolkit:Accordion.ContentTemplate> 
      <DataTemplate> 
       <TextBox Text="{Binding MenuItems/MenuItemName}"/> 
      </DataTemplate> 
    </WPFToolkit:Accordion.ContentTemplate> 
</WPFToolkit:Accordion> 

这正常生产的头,但仅在每个组中的第一个菜单项显示的内容。我已经尝试了上述各种不同的内涵,但至今我还没有达到预期的结果。我在内容模板中尝试了一个ListView而不是TextBlock,认为我需要多个项目,但是这会产生一个空白内容区域。

任何人都可以帮忙吗?

回答

0

/属性路径中的字符表示绑定到集合中的当前项目。由于您没有以其他方式设置当前项目,因此它将始终是第一项。请参阅PropertyPath XAML Syntax

如果您希望内容成为MenuItems的整个列表,您应该使用ItemsControl或其某个子类(如ListBox)。

像这样的事情会给你一个文本框为每个菜单项集合中:

<WPFToolkit:Accordion.ContentTemplate> 
    <DataTemplate> 
     <ItemsControl ItemsSource="{Binding MenuItems}"> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <TextBox Text="{Binding MenuItemName}"/> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
    </DataTemplate> 
</WPFToolkit:Accordion.ContentTemplate> 
+0

嗨 - 感谢您的回复。正如我在我的原始文章中所说的,我尝试了一个没有成功的列表框。我现在正在使用不同的数据结构,无论出于何种原因,这已经解决了我的问题。 – Sean 2010-07-14 06:24:13