Question

Je suis en train de lier KeyValuePair éléments d'un dictionnaire à un ItemsControl. Mon dictionnaire a 15 éléments et le code suivant me montre 15 TextBoxes:

<WrapPanel Name="PersonsWrapPanel" Grid.Row="0">
    <ItemsControl ItemsSource="{Binding Persons}" >
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Horizontal" Width="auto">
                </WrapPanel>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                    <TextBox Text="{Binding Value.Text}"></TextBox>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</WrapPanel>

Malheureusement, sans aucun contenu TextBox (ce qui serait la clé ou la valeur). Toutes les idées?

Était-ce utile?

La solution 2

Je l'ai résolu en utilisant cette ligne:

  <TextBox Text="{Binding Value, Mode=OneWay}"></TextBox>  

Le code sur http :. //www.dev102.com/2008/03/07/binding-a-wpf-control-to-a-dictionary/ ne semble pas fonctionner

Autres conseils

Peut-être essayer lier directement aux valeurs du dictionnaire:

ItemsSource="{Binding Persons.Values}"

Si je comprends votre XAML correctement, chaque objet dans le dictionnaire a un champ appelé « Texte » auquel vous essayez de lier. Si oui et vous apportez les modifications ci-dessus, vous devrez changer votre DataTemplate ainsi:

<TextBox Text="{Binding Text}" />

Voir cet article pour plus d'informations. HTH.

Disons que vous avez un dictionnaire appelé RowValues, à la fois la [clé, valeur] définie comme [string, string].

Maintenant, pour se lier à la NVP de ce dictionnaire, vous pouvez faire ce qui suit:

<ItemsControl ItemsSource="{Binding RowValues.Values}" >

Pour afficher le texte (valeur), vous pouvez lier comme:

<TextBlock Text="{Binding}"/>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top