Ajouter une collection ou un tableau à wpf dictionnaire de ressources
J'ai chercher haut et bas et ne pouvez pas trouver une réponse à cela. J'ai deux questions
- Comment créer un tableau ou d'une collection dans le code XAML. J'ai un tableau je veux m'en tenir là et de se lier à une zone de liste modifiable. Ma première idée était de mettre un ItemsControl dans un dictionnaire de ressources, mais le ItemsSource d'une liste déroulante s'attend à ce IEnumerable donc ça n'a pas de travail.
Voici ce que j'ai essayé dans mon dictionnaire de ressources et aucun ne fonctionne
<ItemsControl x:Key="stateList">
<sys:String>AL</sys:String>
<sys:String>CA</sys:String>
<sys:String>CN</sys:String>
</ItemsControl>
<ItemsControl x:Key="stateList2">
<ComboBoxItem>AL</ComboBoxItem>
<ComboBoxItem>CA</ComboBoxItem>
<ComboBoxItem>CN</ComboBoxItem>
</ItemsControl>
et voici comment je lier à elle
<ComboBox SelectedValue="{Binding Path=State}" ItemsSource="{Binding Source={StaticResource stateList2}}" >
</ComboBox>
EDIT: MISE À JOUR
J'ai eu cette première partie travailler de cette façon
<col:ArrayList x:Key="stateList3">
<sys:String>AL</sys:String>
<sys:String>CA</sys:String>
<sys:String>CN</sys:String>
</col:ArrayList>
Cependant, je préfère ne pas utiliser un tableau de la liste, je voudrais utiliser une liste générique donc, si quelqu'un sait comment s'il vous plaît laissez-moi savoir.
ÉDITION mise à JOUR: je suppose que le XAML a très peu de soutien de médicaments génériques, alors peut-être un tableau de la liste est le meilleur que je peux faire pour l'instant, mais j'aimerais de l'aide sur la deuxième question, si quelqu'un a une anser
2e. J'ai essayé de référencement, une fusion de dictionnaire de ressources dans mon XAML et a eu des problèmes parce que, en vertu de la Fenêtre.ressources que j'avais plus que le dictionnaire de sorte qu'il m'a obligé à ajouter x:Key. Une fois que j'ai ajouter la clé, le système peut ne plus trouver les éléments dans mon dictionnaire de ressources. J'ai dû déplacer la fusion de dictionnaire à la Grille.Les ressources en place. Idéalement, j'aimerais référence de la fusion de dictionnaire dans l'application.xaml, mais j'ai le même problème
Voici un exemple de code. Cette première partie requis un x:clé à compiler, car j'ai du convertisseur et il se plaint que chaque élément doit avoir une clé si il n'y a plus d'un
<UserControl.Resources>
<win:BooleanToVisibilityConverter x:Key="VisibilityConverter" />
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ResourcesD.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
J'ai dû changer à ce
<UI:BaseStep.Resources>
<win:BooleanToVisibilityConverter x:Key="VisibilityConverter" />
</UI:BaseStep.Resources>
<Grid>
<Grid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ResourcesD.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Grid.Resources>
</Grid>
Merci
OriginalL'auteur Chris Cap | 2010-03-19
Vous devez vous connecter pour publier un commentaire.
Autant je comprends votre problème, vous voulez lier une zone de liste déroulante (ou une liste) avec un tableau d'éléments, non? Si vous voulez que les éléments de certaines des sources de données externes, vous pouvez simplement faire usage de la pratique DataContext de la propriété. Recherche MSDN pour plus d'informations sur cette. Toutefois, si vous ne voulez pas un manuel de collecte, de faire de cette façon:
Créer votre propre classe:
et maintenant l'utiliser comme ceci:
Ou, si vous voulez plus de générique de collecte de créer une classe comme ceci:
et de l'utiliser comme ceci:
Vous pouvez également faire usage de certains dans-construit des classes comme
Int32Collection
qui implémenteIEnumerable
. Vous pouvez les utiliser directement comme une ressource.La
Resources
propriété de toutFrameworkElement
commeWindow
,UserControl
, ouApplication
) est de typeResourceDictionary
pas de la collection de dictionnaires de ressources! si vous ne peut pas faire comme ceci:Au lieu de faire comme ceci:
Espère que cette aide.
En ce qui concerne,
Mihir Gokani
OK, j'ai ajouté répondre à votre deuxième question. Est-ce ce que vous recherchez?
oups! Je pense que ma deuxième réponse est similaire à celle de @Abe
Merci beaucoup, cette explication qui fait vraiment de sens
aucune idée pourquoi le déplacement d'une déclaration auprès de l'app.xaml pour dictionnaire de ressources dans un autre dossier de jeter une erreur? J'ai tous les espaces de noms spécifiés.
OriginalL'auteur mg007
S'il vous plaît corrigez-moi si je me trompe, mais je pense que vous voulez quelque chose de ce genre?
En haut de votre fenêtre, vous auriez une propriété:
Et à l'intérieur de votre code, vous avez de l':
La liaison serait de se produire sur un contrôle avec une propriété à quelque chose comme ceci:
OK désolé, je ne suis pas la main, je vais garder cette réponse ici dans le cas où il aide quelqu'un d'autre.
OriginalL'auteur Brian R. Bondy
Pour les ressources, vous avez juste besoin de déménageur de votre convertisseur supplémentaires dans le nouvellement déclarée ResourceDictionary:
OriginalL'auteur Abe Heidebrecht
Si vous ajoutez dictionnaire de ressources à l'intérieur de la Fenêtre de ressources, vous ne serez pas en mesure d'y accéder de partout, au lieu de cela, vous devez ajouter dans "Application"de ressources (voir App.fichier xaml).
Ce sera disponible dans toutes les WPF objet indépendamment de la création de toute hiérarchie d'héritage.
Je pense que vous pouvez déplacer votre convertisseur à l'intérieur de votre ResourcesD.xaml et puis vous pouvez avoir seulement un dictionnaire de ressources élément.
Eh bien, j'ai plusieurs autres ressources dans l'application.xaml, je serais obligé de déplacer tous d'entre eux. Quelque chose semble juste étrange. Dois-je lier avec le x:clé de référence en quelque sorte.
Non, je ne pense pas que vous pouvez le faire, je pense que la meilleure façon de le faire est, vous pouvez avoir plusieurs dictionnaires de ressources... vous pouvez avoir un "ConverterResources.xaml" et "CollectionResources.xaml" et vous pouvez fusionner plusieurs ressources dans le dictionnaire de ressources, cependant, ce faisant, vous serez en mesure de séparer tout logiquement ainsi que de résoudre votre problème.
Qui ne font sens. J'ai essayé et ça fonctionne. Cependant, il est maintenant à défaut de créer un objet que j'avais dans mon application.xaml. Ne pas me donner la peine d'informations de débogage. J'ai changé les choses un peu pour que l'application fonctionne encore. Sorte de une mauvaise solution, mais les ressources de la résolution. Merci
OriginalL'auteur Akash Kava