Zmienienie jednej linijki w listboxie

0

Witam, mam problem ze zmianą jednej linjki lub co 2-3 linjki( chodzi o to samo) w Windows Phone 8.1. Próbowałem już róznych metod ale żadna nie działa.

Chce aby dana linia miała inny kolor.

 
for (int i = 0; i < 10;i++ )
            {
                if (i % 2 == 0)
                {
                    
                    listBox1.Items.Add("AAAA");
                    listBox1.Foreground = new SolidColorBrush(Colors.White);
                    
                }
                else
                {
                    listBox1.Items.Add("BBBB");
                    listBox1.Foreground = new SolidColorBrush(Colors.Blue);
                }
                
                
            }

Używając tego zmienia się cały kolor listBoxa

0

No i tak ma sie zmieniać ;) Popatrz uważnie co robi ten kod, on leci sobie w petli i w zaleznosci od czegostam wykonuje

listBox1.Foreground = whatever

wiec zmienia property Foreground obiektowi listBox1;p

0

No ok, ale jak zmienić wartość Foreground tylko dla wiersza z indeksem i.
Tak żeby te kolory były na przemian ?

3
  1. Nie wkładaj bezpośrednio stringów, ale kontrolki, np. StackPanel w określonych kolorach tekstu i wewnątrz nich dopiero swoje stringi;
  2. Skorzystaj z DataTemplate i konwertera, żeby zautomatyzować powyższe: https://social.msdn.microsoft.com/Forums/silverlight/en-US/40ab4d18-6ded-40f3-a0b3-a2688981ec99/alternating-background-colors-for-listbox-rows?forum=silverlightcontrols
0

Analizując kod coś mniej więcej wiem gdzie co i jak się dzieje, ale nie wiem gdzie zamieścić ten kawałek kodu:

<UserControl.Resources>
        <c:MyConverter x:Key="myconverter"></c:MyConverter>
    </UserControl.Resources>

oraz co znaczy to ,,c" ?

2

Ten kawałek gdzieś w PhoneApplicationPage. Zamiast UserControl.Resources może też być PhoneApplicationPage.Resources lub podobnie. "c" to definicja przestrzeni nazw, która powinna być też w nagłówku twojej strony, np. coś w stylu:

<common:LayoutAwarePage
    x:Class="TemperatureApp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    
(...)
    xmlns:local="using:Ktos.TemperatureApp">

<common:LayoutAwarePage.Resources>
        <local:StringFormatConverter x:Key="StringFormatConverter" />
(...)

W tym kodzie jest co prawda LayoutAwarePage z moich kodów, ale reguła jest ta sama - definiowana jest przestrzeń nazw "local" odwołująca się do przestrzeni nazw (kodu) Ktos.TemperatureApp oraz definiowany jest zasób w postaci konwertera StringFormatConverterwzięty właśnie z niej.

0

Troche skorzystałem z tego co napisałeś lecz napisałem coś takiego:

public Produkty()
        {
            InitializeComponent();
            for (int i = 0; i < 100; ++i)
            {
                DodajProdukty(i + 1);
            }
        }

        private void DodajProdukty(int ilosc)
        {
            var newTextBlockProdukt = new TextBlock() { Text = "Produkt " + ilosc, FontSize = 60 };
            var newTextBlockKalorie = new TextBlock() { Text = "Kalorie: " + ilosc, FontSize = 30, Foreground = new SolidColorBrush(Colors.Red)};
            StackPanel1.Children.Add(newTextBlockProdukt);
            StackPanel1.Children.Add(newTextBlockKalorie);
        }
 

teraz pytanie bo potrzebuje aby po kliknięciu w dany produkt otworzył on się w nowej karcie, przydała by się metoda Click z buttona, jak można z tego wyjśc, bo powyższy kod spełnia to o co pytałem na początku, chciałbym jeszcze tylko, żeby działało Textchanged_Tap Button_Click lub podobna metoda zdarzeniowa ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1