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 に適切にバインドされていることは間違いありません。ここで、その子 Itemcontrol にリスト currentItems を入力します。複数の親コントロールがあるため、子の Items コントロールに動的な名前を付ける必要がありました。さらに、コードから子 ItemsControl にアクセスできません。

それを可能にする方法は?ItemsControl 自体の子 ItemsControl が存在するかどうかはわかりません。

この問題の解決策または別の解決策を教えてください。

編集: ユーザーにトークン番号、時間などを、インタラクティブなボタンのリストに置き換えられるアイテムのリストとともに表示してもらいたいです。

更新: XAML コンテンツをわずかに変更しました。子 ItemsControl は DataTemplate 内にあります。

4

1 に答える 1

6

項目コントロールで名前を付ける必要はありません。項目コントロールで何かをトリガーする場合は、項目テンプレートのボタンを使用します。

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

表示する必要があるものは何でも datatemplate タグに追加してください。私の例では、ボタンのテキストは親で見つかった TokenNo になり、tokenlist バインディングを通じて表示されるトークンになります。

于 2012-08-14T07:17:23.333 に答える