2009-12-11 6 views
1

OK J'ai une zone de liste déroulante qui sélectionne un administrateur d'une liste des administrateurs:Comment lier à une donnée contextuelle en dehors de boîte à outils WPF DataGrid

<ComboBox x:Name="adminCombo" 
      ItemsSource="{Binding AdminsList}" 
      DisplayMemberPath="Name" 
      SelectedValue="{Binding Administrator}" 
      SelectedValuePath="Name"/> 

et en dessous je WPF Toolkit DataGrid. Chaque administrateur contient une liste de champs définis par l'utilisateur (AvailableUDFs). Dans la première colonne de ma grille de données, je souhaite avoir un modèle modifiable composé d'une autre liste déroulante dont la source est la liste des champs appartenant à l'administrateur sélectionné. Le balisage suivant ne fonctionne pas.

<toolkit:DataGrid 
    AutoGenerateColumns="False" 
    ItemsSource="{Binding Path=UserDefinedFields}"> 
    <toolkit:DataGrid.Columns> 
     <toolkit:DataGridTemplateColumn Header="Custom Data"> 
      <toolkit:DataGridTemplateColumn.CellEditingTemplate> 
      <DataTemplate> 
        <ComboBox ItemsSource="{Binding ElementName=adminCombo, 
        Path=SelectedValue.AvailableUDFs}" 
        SelectedValue="{Binding Field.Type}" 
        DisplayMemberPath="Name"/> 
      </DataTemplate> 
      </toolkit:DataGridTemplateColumn.CellEditingTemplate> 
     </toolkit:DataGridTemplateColumn> 
    </toolkit:DataGrid.Columns> 
</toolkit:DataGrid> 

J'ai aussi essayé Source relative - Trouver Ancêtre et la recherche dans l'arbre à la zone de liste déroulante précédente, mais en vain. Assez curieusement, mettre la même zone de liste déroulante dans un modèle d'éléments ListView fonctionne très bien, la liste correcte des éléments s'affiche en fonction de l'administrateur sélectionné. Le problème avec l'utilisation d'un ListView WPF est que finalement je veux avoir d'autres cellules éditables sur la même ligne, et un ListView ordinaire n'est pas prévu à cet effet.

Quelqu'un peut-il m'aider? Merci Chris

+0

Pour ce que cela vaut un WPF ListView prend en charge plusieurs cellules modifiables sur la même ligne: il suffit d'utiliser CellTemplate au lieu de DisplayMemberBinding lors de la configuration de la colonne. – itowlson

Répondre

0

vous pouvez utiliser un datagridcombocolumn, et obtenir la source des éléments à c'est un peu délicat, je lui ai répondu comment faire here, profiter.

+0

Merci pour votre réponse j'ai essayé ceci mais le problème est la zone de liste déroulante dans le datagrid ne peut pas trouver la zone de liste déroulante nommée 'adminCombo'. Erreur System.Windows.Data: 4: Impossible de trouver la source pour la liaison avec la référence 'ElementName = adminCombo'. BindingExpression: Path = SelectedItem.AvailableFundUDFs; DataItem = null; l'élément cible est 'ComboBox' (Name = ''); La propriété target est 'ItemsSource' (type 'IEnumerable') – cjroebuck

Questions connexes