我一直在尝试(并且失败)使用数据绑定动态创建手风琴。
我有一个名为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 :(得分:0)
属性路径中的/
字符表示绑定到集合中的当前项。由于您没有以其他方式设置当前项目,因此它始终只是第一项。见PropertyPath XAML Syntax。
如果您希望内容成为MenuItem的整个列表,则应使用ItemsControl
或其中一个子类,例如ListBox
。
这样的内容会为集合中的每个MenuItem提供一个文本框:
<WPFToolkit:Accordion.ContentTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding MenuItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding MenuItemName}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</WPFToolkit:Accordion.ContentTemplate>