Je lie une liste à un objet contenant deux tableaux de chaînes. Chaque élément de zone de liste est défini sur un modèle de données composé d'une zone de texte et d'une zone de liste déroulante. Le premier tableau de chaînes est lié à la liste et le second tableau de chaînes est lié à la liste déroulante. Eh bien, au moins c'est ce que j'essaie d'accomplir. Le problème est que je ne peux pas comprendre la syntaxe de liaison pour définir le deuxième tableau dans la zone de liste déroulante. Voici ce que j'ai:Liaison ListBox DataTemplate avec deux listes
La première chose est ma classe avec mes deux tableaux à cordes. Assez simple. S'il vous plaît noter que le contenu de la chaîne de caractères est là pour plus de simplicité.
public class JobAssignments
{
public JobAssignments()
{
m_people.Add("John");
m_people.Add("Bill");
m_people.Add("Frank");
m_people.Add("Steve");
m_jobs.Add("Architect");
m_jobs.Add("Teacher");
m_jobs.Add("Carpenter");
m_jobs.Add("Plumber");
}
private List<string> m_people = new List<string>();
public List<string> People { get { return m_people; } set { m_people = value; } }
private List<string> m_jobs = new List<string>();
public List<string> Jobs { get { return m_jobs; } set { m_jobs = value; } }
};
Dans le code, je mis une instance de cette classe comme datacontext de cette zone de liste:
<ListBox x:Name="listBox"
Grid.Row="0"
HorizontalContentAlignment="Stretch"
DataContext="{Binding}"
ItemsSource="{Binding People}"
ItemTemplate="{StaticResource JobAssignmentDataTemplate}">
</ListBox>
Avec un modèle de données qui ressemble à ceci:
<DataTemplate x:Key="JobAssignmentDataTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="{Binding}"/>
<ComboBox Grid.Column="2"
SelectedIndex="0"
ItemsSource="{Binding Jobs ???? }"/>
</Grid>
</DataTemplate>
Ce que je habituellement sortir mes expériences est une liste de personnes, mais la liste déroulante de chaque élément de la liste est vide.
je peux l'obtenir pour travailler si j'utilise
ItemsSource="{Binding ElementName=listBox, Path=DataContext.Jobs }"/>
mais je ne veux pas utiliser ElementName comme la source de hardcodes le tableau d'une zone de liste spécifique que je voudrais éviter.
Essayer quelque chose comme
ItemsSource="{Binding RelativeSource={RelativeSource Self}, Path=Parent.Jobs}"/>
ne semble pas fonctionner non plus comme il est à la recherche pour les emplois dans la grille.
Une petite poussée dans la bonne direction aiderait grandement.
Merci!
Malheureusement, la liste des tâches n'est pas statique dans mon projet, ce qui aurait été bien. – djcouchycouch
Ensuite, essayez ma première étape, la liaison ELementName à la ListBox –