2017-10-20 5 views
0

Dans le modèle MVVM de WPF, seules les données du modèle sont liées à ItemsControl. Puis-je obtenir l'UIElement pour cet élément?Dans le modèle MVVM de WPF, seules les données de modèle sont liées à ItemsControl. Puis-je obtenir l'UIElement pour cet élément?

Cependant, parce qu'il y a des centaines de ItemsControls, que ItemsControl contient je ne sais pas.

void InitData() 
    { 
     GroupList = new ObservableCollection<GroupModel>(); 

     for (int i = 0; i < 10; i++) 
     { 
      GroupModel groupItem = new GroupModel() { GroupName = $"Group {i}" }; 
      groupItem.ItemList = new ObservableCollection<KeyValueModel>(); 
      for (int i2 = 0; i2 < 100; i2++) 
      { 
       groupItem.ItemList.Add(new KeyValueModel() { Key = string.Format("Key {0}", i2.ToString("000")), Value = string.Format("Value {0}", i2.ToString("000")) }); 
      } 

      GroupList.Add(groupItem); 
     } 

     // Can I get the UIElement of the targetItem? 
     KeyValueModel targetItem = GroupList.Last().ItemList.Last(); 
    } 


<ItemsControl ItemsSource="{Binding GroupList}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding GroupName}" Foreground="Black" FontSize="24" FontWeight="Bold" Margin="12,0,12,0" /> 

       <ItemsControl ItemsSource="{Binding ItemList}"> 
        <ItemsControl.ItemsPanel> 
         <ItemsPanelTemplate> 
          <WrapPanel /> 
         </ItemsPanelTemplate> 
        </ItemsControl.ItemsPanel> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <StackPanel Orientation="Horizontal" Background="Black" Width="100" Height="100" Margin="0,0,10,10"> 
           <TextBlock Text="{Binding Key}" Foreground="White" /> 
           <TextBlock Text="{Binding Value}" Foreground="White" Margin="10,0,0,0" /> 
          </StackPanel> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 

      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
+0

Où souhaitez-vous obtenir une référence à l'élément d'interface utilisateur et à quel élément d'interface utilisateur? – mm8

+0

Pourquoi voulez-vous obtenir l'article d'interface utilisateur? Et BTW votre 'WrapPanel' ne supporte pas' Virtualisation' qui peut causer des pertes de performance. – XAMlMAX

Répondre