cum să creați o listă de culori multiple

Am încercat să popula o listă de mai multe selecții cu culorile acceptate în WP7.1, dar am probleme care generează o listă a acestor culori în cod în spatele lor. Până acum, soluția mea este după cum urmează:

ColorListPage.xaml


                        
            
                
                    
                    
                
                            
        

și am încercat să databind la proprietățile dreptunghiului și textblock-ului, astfel încât dreptunghiul va fi umplut cu o valoare solidcolorbrush și blitzul text va conține numele respectivului solidcolorbrush. Aici stau blocat, pentru că nu-mi dau seama cum să realizez asta? În mod specific, nu încerc să apel la culorile accentului, ci toate opțiunile de culoare disponibile (de exemplu, văzute la setarea umplerii explicității dreptunghiului există o listă uriașă de opțiuni).

0

1 răspunsuri

Vrei un MultiSelectList sau un ListPicker? Doriți ca utilizatorul să poată alege mai mult de o culoare? Iată un exemplu care folosește un ListPicker. Pentru a obține culorile, va trebui să creați singur culorile. Iată o mostră utilizând culorile accentului

Xaml pentru ListPicker:

        
            
                
                    
                        
                        
                    
                
            
        

Și codul pentru a genera colecția de culori:

private IList CreateBrushes()
    {
        var brushes = new List
        {
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,27,161,226)), Name = "blue" },    
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,160,80,0)), Name = "brown" },     
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255, 51,153,51)), Name = "green" },   
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,162,193,57)), Name = "lime" },   
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,216,0,115)), Name = "magenta" }, 
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,240,150,9)), Name = "mango" },   
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,230,113,184)), Name = "pink" },  
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,162,0,255)), Name = "purple" },  
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,229,20,0)), Name = "red" },      
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,0,171,169)), Name = "teal" },    
        };
        return brushes;
    }



public class ColorItem
{
    public SolidColorBrush Brush { get; set; }
    public string Name { get; set; }
}

De asemenea, puteți folosi reflecția pentru a obține colecția de culori.

        Type t = typeof(Colors);
        var properties = t.GetProperties();
        List items = new List();

        for (int i = 0; i < properties.Length; i++)
        {
            var property = properties[i];
            items.Add(new ColorItem
            {
                Name = property.Name,
                Color = new SolidColorBrush((Color)property.GetValue(null, null))
            });
        }
1
adăugat
Vă mulțumim pentru răspunsul dumneavoastră. Mi-ar plăcea, de fapt, ca utilizatorul să selecteze cât mai multe culori posibil folosind o listă Multiselect. Am văzut exemple de culori accentuare obligatorii la o listă, dar din moment ce există mai multe culori construite în culori pentru opțiunile de umplere (cum ar fi fum alb, Beige, DarkMagenta, etc) mă întrebam dacă există o modalitate mai ușoară de a numi aceste culori o listă de legare la lista Multiselect? Nu știu cum să obțin alte culori decât setarea în mod explicit a unui prim plan, umplerea sau orice ar fi în xaml și apoi selectarea di
adăugat autor Matthew, sursa
a adăugat o altă soluție, sperăm că ajută
adăugat autor Shawn Kendrot, sursa