Comment définir la couleur de premier plan de l'élément de zone de liste
J'ai une zone de liste dans un WP7 page de l'application qui-je lier à une collection (Liste) d'un objet personnalisé appelé Emplacement. Dans cet objet est un champ appelé de l'OMM et de ce que je veux faire quand la zone de liste des charges est de définir la foregound couleur de tout ce lié listbox élément a la même valeur que ma valeur par défaut... mais je n'arrive pas à le faire fonctionner et rien de ce que j'ai lu ou googlé a aidé.
Je sais que les éléments de la liste sont liés à la source de données, mais je veux arriver à la représentation physique de l'élément et modifiez la couleur d'avant-plan.... juste ne peux pas savoir comment je le faire donc si quelqu'un peut aider je vous en serais reconnaissant.
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="0,0,0,0" >
<ScrollViewer Height="615" HorizontalAlignment="Left" Margin="5,5,5,5" Name="scrollViewer1" VerticalAlignment="Top">
<ListBox Name="lbxSavedLocs" Height="615" FontSize="22" HorizontalAlignment="Left" VerticalAlignment="Top" Width="470" SelectionChanged="lbxSavedLocs_SelectionChanged" Loaded="lbxSavedLocs_Loaded">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Width="380" Text="{Binding SiteName}" HorizontalAlignment="Left" />
<TextBlock Width="90" Text="{Binding WMO}" HorizontalAlignment="Center" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
</Grid>
private void lbxSavedLocs_Loaded(object sender, RoutedEventArgs e)
{
//Populate the listbox from our saved locations.
lbxSavedLocs.ItemsSource = gl.savedLocs.OrderBy(x => x.SiteName);
foreach (Location itm in lbxSavedLocs.Items)
{
if (loc.WMO == gl.defaultWMO)
{
//GET AN "INVALID CAST" EXCEPTION HERE:
((ListBoxItem)itm).Foreground = new SolidColorBrush(Color.FromArgb(255, 255, 255, 255));
}
}
//Hopefully this produces a redraw of the ListBox.
lbxSavedLocs.InvalidateArrange();
}
OriginalL'auteur nzmike | 2011-02-10
Vous devez vous connecter pour publier un commentaire.
Ici est une façon....je pense qu'il fonctionne
La propriété que vous souhaitez lier est
Foreground
, doncDans le programme mis en place les apt condition où vous remplissez votre zone de liste pour choisir le bon Forground à l'aide de
foregroundColor
Remplir la zone de liste à l'aide d'une classe containin
créer un
List<listboxItem> items=new List<listboxItem>();
et remplir la liste
items
dans une boucle où u donner la condition que vous souhaitez.après que
appel
lbxSavedLocs.ItemSource=items
je l'hépatite a testé cette.
mon exigence était de changer le fond d'une/de particulier listbox éléments de dynamique!
je suis toujours à la recherche d'un code qui va m'aider à manipuler d'une seule listboxitem, si!
OriginalL'auteur VichitraVij
Essayez ceci:
Option1:
Option2:
OriginalL'auteur Boryana Miloshevska
Si vous avez besoin d'appliquer la même couleur d'avant-plan pour tous les éléments de la
ListBox
ou de lier la couleur d'avant-plan à une valeur de l'élément de données, la meilleure approche consiste à modifier laItemContainerStyle
. LeItemContainerStyle
définit le visuel wrapper autour du contenu de laItemTemplate
et utilise par défaut unContentControl
que vous pouvez définir ou lier l'Foreground
propriété:Comme je l'ai mentionné dans ma réponse, vous pouvez databind la couleur, trop. Si votre objet de données de s'exposer, de la couleur et de revenir à la couleur par défaut dans la plupart des circonstances et de votre couleur personnalisée en tant que de besoin.
OriginalL'auteur Derek Lakin