Bonjour,
Je désire remplir un Combobox avec en ItemSelected une valeur provenant d'un XML et pour les ItemsSource, les infos provenant de je ne sais pas ou !!(code procédural par exemple)
J'ai comme source mon fichier XML que je bind avec un XMLDataProvider en XAML et code behind. J'affiche mes éléments de mon XML dans une listView.
Par contre, j'ai une ComboBox dans ma listView et je ne sais pas trop comment m'y prendre pour pouvoir afficher les ItemsSource.
1. Dans mon fichier XML, j'ai 1 attribut <mon_contenu>F</mon_contenu> qui ne contient qu'un char.
2. J'ai plusieurs valeurs possibles pour ma Combo ex. F, B, C, D
3. J'arrive bien entendu à Binder ma combobox sur mon fichier XML et affiché la bonne valeur. Grâce à
<ComboBox SelectedIndex="0" SelectedIndex="{Binding XPath=mon_contenu_du_XML}">
4. maintenant, et c'est là que ca se corse. Je dois (selon moi) créer une ObservableCollection et créer toutes mes valeurs possibles pour ma combo en code behind.
J'arrive à faire cela et à les afficher dans ma Combo, mais par contre je n'arrive plus dans le même temps, à reprendre ma valeur de mon XML (donc la vraie valeur du row)
En résumé, mon problème est le suivant : est-il possible d'afficher dans le combo un ItemSelected provenant d'une certaine source (XMLDataProvider) puis les ItemsSource depuis une autre source (ObjectDataProvider) ???
J'espère m'être bien fait comprendre .
Voici une partie de mon code pour mieux me faire saisir.
1 2 3 4 5 6 7 8 9
| ObjectDataProvider odp = new ObjectDataProvider();
private ObservableCollection<string> libelleProduit = null;
public ObservableCollection<string> LibelleProduit
{
get { return libelleProduit; }
set { libelleProduit = value; }
} |
1 2 3 4 5 6 7 8
| libelleProduit = new ObservableCollection<string>();
libelleProduit.Add("produit1");
libelleProduit.Add("peroeji2");
odp = (ObjectDataProvider)this.FindResource("odpProduit");
if (odp != null)
{
odp.ObjectInstance = LibelleProduit;
} |
XAML : Resources
1 2 3 4 5 6 7
| Window.Resources>
<!--put in Resources-->
<XmlDataProvider x:Key="myDataXML" XPath="cycling/track"/>
<ObjectDataProvider x:Key="odpProduit"/>
</Window.Resources> |
XML : déclaration listView
<ListView x:Name="listView" ItemsSource='{Binding Source={StaticResource myDataXML}}'
ComboBox: (ne marche pas mais syntaxe selon mon idée d'avoir 2 sources différentes
1 2
| SelectedItem="{Binding Source={StaticResource myDataXML XPath=type, Mode=TwoWay}"
ItemsSource="{Binding Source={StaticResource odpProduit}}" |
Merci d'avance pour vos infos
Partager