J'ai deux problèmes de liaison distincts avec des listboxes avec un itemtemplate qui contient une texbox.Liaison à l'intérieur de listbox itemtemplate problems
1) Une zone de liste se lie à une liste de chaînes. Comment puis-je afficher chaque chaîne dans les zones de texte créées et autoriser la liaison bidirectionnelle en même temps? La liaison bidirectionnelle n'est pas autorisée sans spécifier un chemin ou XPath.
<ListBox Height="231" HorizontalAlignment="Left" Margin="0,167,0,0" Name="listBoxKeys" VerticalAlignment="Top" Width="219" ItemsSource="{Binding Path=SelectedPlatform.Keys}" SelectedItem="{Binding Path=SelectedKey,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,0,0,0">
<TextBox Text="{Binding Mode=OneWay}" Margin="0,0,0,0" Height="Auto" MinWidth="80" MaxWidth="80" HorizontalAlignment="Left" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
et 2) j'utiliser un autre listbox qui se lie à une liste générique d'une classe KeyValuePair personnalisée. Le itemtemplate contient une zone de texte et une liste déroulante. Le texte de la zone de texte est lié à la propriété key de chaque objet KeyValuePair et la liste déroulante est sélectionnée pour la propriété value. Mon problème est que je veux que le combo soit rempli par une liste de chaînes déclarées dans mon viewmodel qui va changer à l'exécution. Le datacontext de la fenêtre est le viewmodel où la liste est déclarée. Je ne connais pas la syntaxe exacte que j'ai besoin d'utiliser pour lier la source d'objets combobox. Voici mon code:
<ListBox Height="393" HorizontalAlignment="Left" Margin="0,72,0,0" Name="listBoxActions" VerticalAlignment="Top" Width="254" ItemsSource="{Binding Path=SelectedPlayer.ControlProfile.MappedActions}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,0,0,0">
<TextBox Text="{Binding Key, Mode=TwoWay,UpdateSourceTrigger=LostFocus}" Margin="10,0,0,0" Height="Auto" MinWidth="80" MaxWidth="80" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<ComboBox Margin="10,0,0,0" Height="Auto" MinWidth="80" MaxWidth="80" HorizontalAlignment="Left" VerticalAlignment="Center" ItemsSource="{Binding ?}" SelectedItem="{Binding Value, Mode=TwoWay}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Cela devrait vraiment avoir été deux questions distinctes que vous allez trouver certaines personnes peuvent répondre à une et non l'autre de sorte que vous pourriez obtenir deux personnes répondant correctement. Cela rendra difficile de marquer la réponse comme correcte. –