2009-09-09 9 views
0

Je cherche une solution pour mon RIA projet Services, qui a une Listbox avec les éléments de la liste en tant que contrôle utilisateur défini comme un ItemTemplate, comme ceci:RIA Services - Obtenir DataContext dans un élément de la liste

<ListBox x:Name="lstMain"> 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
      <foo:ListItemDetail /> 
     </StackPanel> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

La zone de liste est liée à un service de domaine dans le code-behind. Les éléments de liste sont de type ListItemDetail, avec des champs modifiables et un bouton de mise à jour. Je voudrais appeler le service de domaine (le contexte de données des listes parent) à SaveChanges() et mettre à jour l'élément lorsque le bouton est cliqué, mais il n'y a aucun moyen d'accéder au service de domaine (original) qui peuplait la liste. Existe-t-il une solution élégante pour cela?

J'essaie d'utiliser l'élément de balise Listbox pour stocker le contexte de domaine, mais je suis incapable d'y accéder à partir d'un ListItem. Je reçois le parent StackPanel, mais son parent est null.

Merci à l'avance, Ra

Répondre

1

Vous pouvez créer une propriété sur le contrôle ListItemDetail. Vous pouvez ensuite lier cette propriété au DataContext de ListBox

<ListBox x:Name="lstMain"> 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
      <foo:ListItemDetail MyRiaContext="{Binding DataContext, ElementName=lstMain}"/> 
     </StackPanel> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox>