4

我是 WPF 的新手。我一直在尝试执行以下操作:

以下是我的数据结构:

public class TokenItems {public string items {get;set;} public int quantity {get;set}}
public class Token { public int tokenNo {get;set;} public string name {get;set;} public   List<TokenItems> currentItems {get;set;}}
public List<Token> tokenList = new List<Token>();

XAML:

<ItemsControl Name="ParentControl">
   ....
   <DataTemplate>
   <TextBlock Content="{Binding tokenNo}"/>

   <Itemscontrol Name="{Binding tokenNo}">  ?? I tried and want dynamic naming or any other solution for this {Binding name} just won't work i know.??
      ...
      <DataTemplate>
        <Button>
            <Grid>
               ...
               <TextBlock Content="{Binding items}/>
               <TextBlock Content="{Binding quantity}/>
      </DataTemplate>

   </Itemscontrol>
     ....
   </DataTemplate>
</Itemscontrol>

我将所有必要的数据添加到 tokenList 并执行以下操作:

ParentControl.ItemsSource = tokenList;

毫无疑问,所有内容都为 ParentControl 正确绑定。现在我想用列表 currentItems 填充它的子 Itemcontrol。由于我需要多个父控件,因此我需要对子 Itemscontrol 进行动态命名。此外,我无法从代码访问子 ItemsControl。

如何使这成为可能?我不知道是否存在 ItemsControl 本身的子 ItemsControl。

请建议我解决此问题的任何解决方案或替代解决方案。

编辑:我希望用户查看令牌编号、时间等以及将由交互式按钮列表替换的项目列表。

更新:稍微修改了 XAML 内容。子 ItemsControl 位于 DataTemplate 中。

4

1 回答 1

6

您不需要在 itemscontrol 中命名,如果您希望 itemscontrol 触发某些内容,请使用 itemtemplate 中的按钮:

<ItemsControl ItemsSource="{Binding tokenList}">
   <ItemsControl ItemsSource="{Binding currentItems}">
       <ItemsControl.ItemTemplate>
           <DataTemplate>
               <Button Content="{Binding TokenNo}"/>
           </DataTemplate>
       </ItemsControl.ItemTemplate>
   </ItemsControl>
</ItemsControl>

您可以在 datatemplate 标记中添加您需要显示的任何内容。在我的示例中,按钮上的文本将是它在父级中找到的 TokenNo,即通过 tokenlist 绑定显示的 Token。

于 2012-08-14T07:17:23.333 回答