Comment changer la couleur de l'élément de liste sélectionné [WP8.1]
Je suis en train de travailler sur un projet C# pour Windows Phone 8.1, et je ne peux pas croire que j'ai déjà perdu presque une journée à la recherche d'une solution à un tel problème trivial:
J'ai une page définie avec XAML, sur cette page j'ai une ListView. À un certain point, j'en veux un de l'affichage de la liste des éléments à devenir choisi, je l'appelle myListView.SelectedIndex = quoi que ce soit. Maintenant, je veux que l'élément convient de distinguer visuellement à partir d'autres éléments, par exemple, avoir son texte établi avec une couleur différente. Comment dois-je faire? Voici les parties pertinentes de code:
<Page.Resources>
<DataTemplate x:Key="myListItemTemplate">
<TextBlock
Text="{Binding displayName}"
Style="{ThemeResource ListViewItemTextBlockStyle}"
/>
</DataTemplate>
</Page.Resources>
<ListView
x:Name="myListView"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource myListItemTemplate}"
>
</ListView>
Est-il possible avec XAML seul? Ou peut en être fait dans le code C#, juste quand je myListView.SelectedIndex valeur?
Merci!
J'ai essayé une telle approche, il fonctionne mais il est trop lent lorsque la liste d'articles est grand. J'espérais qu'il est possible de spécifier l'élément sélectionné de style dans le code XAML lui-même, plutôt que de définir la couleur dans les données, en parcourant l'ensemble de la collection.
Oui, la solution est vide de toute optimisation de sorte que les gens comprennent mieux. Si vous voulez éviter la boucle, vous devez Databind la propriété SelectedIndex à votre ViewModel, et lorsque que suscitent les événements. Si vous souhaitez un total XAML solution, je peux probablement vous écrire un échantillon lorsque je rentre à la maison.
Vérifier la solution à nouveau pour un Pur XAML solution.
OriginalL'auteur Andrei Belogortseff | 2014-08-31
Vous devez vous connecter pour publier un commentaire.
K, Andrei je pense que les solutions fournies sont assez bonnes, il buggy. Voici la mienne.
XAML : attention à l'SelectedUnfocused
C# (Un exemple de modèle)
Capture d'écran en cours d'exécution:
Une superbe réponse. Il a fonctionné parfaitement pour moi. Je vous remercie.
Désolé de remonter ce, mais ce que si je veux utiliser la liaison à un bien dans ma classe et également l'utiliser pour définir des styles personnalisés? Je veux utiliser
{Binding Property}
à l'intérieur de laControlTemplate
.Salut, je suis à la programmation ListView pour l'Universel de la Plate-forme Windows et ce n'est pas de travail pour moi. Fait quelque chose de changer pour Windows 10?
OriginalL'auteur Chubosaurus Software
Oui, il est, vous devez définir un style avec un déclencheur sur la propriété sélectionnée. Son toughto yype dans le code sur mon téléphone, mais un rapide google va vous montrer une tonne d'exemples ou ici:ListBox Style de l'élément Sélectionné sur windows phone
Je ne sais pas ce que vous lisez, mais la réponse à la question que j'liés utilisé un modèle qui a été appliqué à un listitem. Je précise aussi utiliser un déclenchement de propriété pour appliquer le style. ni utilise une boucle de stratégie.
Je pense que vous avez répondu à un mauvais commentaire, lol. chubosaurus commentaire utilise une boucle de stratégie
Si vous regardez l'exemple vous vous êtes connecté, vous verrez qu'il utilise la liaison de données à la propriété IsSelected, c'est ce que je faisait allusion, et ce n'est pas une bonne solution pour les grands ensembles de données. Comme pour les déclencheurs, je ne pouvais pas trouver un exemple de code qui fonctionne avec Windows Phone 8.1 L'article lié est pour WP7, qui ne fonctionne pas avec WP8.1.
OriginalL'auteur Steve
Vous pouvez ajouter à votre classe une variable boolean IsSelected, et de le convertir en bg color. Par exemple:
|
OriginalL'auteur the_nuts
Vous avez besoin pour créer un style pour votre ListBoxItem et l'utilisation des story-boards.
Voici un exemple :
Et la définition de l'affichage de la liste :
Le SelectionMode est déjà unique, la valeur par défaut. Après j'ai ajouté ItemContainerStyle à la liste, quelque chose a changé, et votre code semble commencer à prendre effet, mais il s'est cassé la liaison de données: la liste n'est plus alimentée à partir de la source de données modèle.
C'est officiel maintenant: une journée entière gaspillée juste à essayer de changer la couleur de l'élément sélectionné...
avez-vous de copier et de les coller sans avoir à ré-ajout de itemsource de retour dans?
ItemSource est toujours là. Quelqu'un peut-il m'indiquer un travail un exemple de code pour Windows Phone 8.1? Le WP7 code ne fonctionne pas avec WP8.1.
OriginalL'auteur Rom Eh
Vous avez juste besoin d'ajouter ce qui suit à l'App.xaml
</Application.Resources>
<SolidColorBrush x:Key="ListViewItemSelectedBackgroundThemeBrush" Color="#92D050" />
<Application.Resources>
La "hex-Couleur" sera la couleur de l'élément sélectionné dans une liste à la portée de l'application
OriginalL'auteur user3249850
Essayer cela, l'Espoir peut vous aider.
OriginalL'auteur Dinesh