2015-09-09 1 views
1

Avoir passé un bon moment Googling et la recherche de stackoverflow mais soit les solutions ne sont pas tout à fait ce que je cherche, ou je ne suis pas d'application tout à fait raison. Ne pensez pas que c'est une grosse affaire alors j'espère que quelqu'un peut fournir une solution (un peu d'un SO noob donc plus de détails nécessaires me le faire savoir). J'essaie d'obtenir les valeurs de plusieurs éléments d'une liste dans une application XAML universelle W8.1 afin que je puisse les transmettre à une base de données SQLite (je pense comme une chaîne en utilisant une instruction 'join' délimitée par des virgules) . La source de données pour ListItems est actuellement définie manuellement pour différentes valeurs. En attendant, je suis en train de définir un libellé pour le texte de la chaîne comme test et je n'ai pas eu de joie à utiliser les cases à cocher dans la listbox, donc j'ai changé pour ListBoxItems, mais je ne reçois pas le contenu à travers, tout ce qui suit (lors de la sélection de deux éléments de la liste):Obtenir du contenu à partir de plusieurs ListBoxItems et Cast à la chaîne

Windows.UI.Xaml.Controls.ListBoxItem, Windows.UI.Xaml.Controls.ListBoxItem

Il est évident que je m après le contenu, qui devrait être «développeur» et «testeur». Voici le XAML pour le ListBox et mon code actuel:

<TextBlock x:Name="lblAreas" HorizontalAlignment="Left" Margin="548,200,0,0" TextWrapping="Wrap" Text="Areas of Interest" VerticalAlignment="Top" RenderTransformOrigin="1.143,1.692" FontSize="13.333" Height="32" Width="336"/> 
    <ListBox x:Name="lbAreas" HorizontalAlignment="Left" Height="231" Margin="548,241,0,0" VerticalAlignment="Top" Width="194" SelectionMode="Multiple"> 
     <ListBoxItem Content="Developer"/> 
     <ListBoxItem Content="Tester"/> 
    </ListBox> 

code derrière:

var listSelectedItems = lbAreas.SelectedItems.ToList(); 
string strSelectAreas = string.Join(", ", listSelectedItems); 
lblAreas.Text = strSelectAreas; 

Espérons que tout cela est logique, je l'ai essayé différentes méthodes de SO et d'autres qui ressemblent ils devraient travailler mais pas tout à fait là! Merci pour toute aide.

Répondre

0

SelectedItems renvoie une liste d'objets et la représentation sous forme de chaîne de ces objets est la valeur par défaut (qui est le nom de la classe). Vous en fait la propriété Content de chaque élément sélectionné, donc quelque chose comme:

string selectAreas = string.Join(", ", lbAreas.SelectedItems.Select(i => i.Content)); 

lblAreas.Text = selectAreas; 

Note: vous pourriez avoir à jeter chaque article à un ListBoxItem:

string selectAreas = string.Join(", ", lbAreas.SelectedItems.Cast<ListBoxItem>() 
                  .Select(i => i.Content)); 
+0

Excellent, merci pour la réponse rapide Dave, travaillé un régal! A dû lancer à ListBoxItem comme vous l'avez mentionné pour quelqu'un d'autre en train de lire. – newton

+0

vous pouvez utiliser la liaison de texte à listBox.Items avec convertisseur qui retournera la chaîne de jointure. –