2010-11-09 2 views
1

Supposons que je dispose d'un contrôle utilisateur sur lequel datacontext est lié à une machine virtuelle. Cette VM a une propriété pour une liste MyList.Comment obtenir le contrôle parent DataContext pour la liaison de données d'élément à élément?

Dans ce contrôle utilisateur J'ai un ComboBox, je veux mettre en suivant genre de XAML

<Grid x:Name="LayoutRoot" Background="White"> 
      <StackPanel HorizontalAlignment="Stretch"> 
       <sdk:DataGrid ItemsSource="{Binding YourList}" IsReadOnly="True" AutoGenerateColumns="False" > 
        <sdk:DataGrid.Columns>      
         <sdk:DataGridTextColumn Header="Name" Binding="{Binding Name}" /> 
         <!-- ...... --> 
         <sdk:DataGridTemplateColumn Header="User" > 
          <sdk:DataGridTemplateColumn.CellTemplate> 
           <DataTemplate> 
            <ComboBox ItemsSource="{Binding ElementName=LayoutRoot, Path=DataContext.MyList}" DisplayMemberPath="Value" SelectedValuePath="Key" SelectedValue="{Binding UserID}" ></ComboBox> 
           </DataTemplate> 
          </sdk:DataGridTemplateColumn.CellTemplate> 
         </sdk:DataGridTemplateColumn> 

        </sdk:DataGrid.Columns> 
       </sdk:DataGrid> 
      </StackPanel> 
    </Grid> 

mais il ne fonctionne pas.

Comment résoudre ce problème?

+0

Pourquoi essayez-vous de faire la liaison d'élément à élément ici? N'essayez-vous pas de lier la source de ce ComboBox à MyList sur votre ViewModel? Si oui, vous devriez pouvoir faire ceci: ItemsSource = "{Binding MyList}" Peut-être que je ne comprends pas ce que vous entendez par "parent", pourriez-vous montrer plus de code? – JSprang

Répondre

1

Cela a fonctionné à partir de moi. Cela a été le ItemSource pour un ComboBox qui était dans un DataGrid:

 ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=sdk:DataGrid}, 
Path=DataContext.Teams}"> 
Questions connexes