Avatar
lukas.sei
Člen
Avatar
lukas.sei:

Čaute,
Potřebuji pomoct.
Mám observableCollec­tion v které mám uložené všechny uživatelé, které chci zobrazit v listboxu. V uživatelích metoda ToString(), která vrací pořadí v kterém by měl být zobrazen.
Takže moje otázka zní:
Jak mám observableCollec­tion seřadit podle tohoto pořadí.

Předem děkuji.

 
Odpovědět 10. května 17:43
Avatar
Nahoru Odpovědět 10. května 17:45
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
lukas.sei
Člen
Avatar
lukas.sei:

Dík. Udělal jsem vše podle tohohle komentáře(http://stackoverflow.com/a/16344936). Vše šlo v pohodě, až na řádek:

return Utils.LogicalStringCompare(a.Penize, b.Penize);

Kde dostanu chybu:
"'Utils' is inaccessible due to its protection level"

Celý kód:

static class Extensions
{
    public static void Sort<T>(this ObservableCollection<T> collection) where T : IComparable
    {
        List<T> sorted = collection.OrderBy(num => num).ToList();
        for (int i = 0; i < sorted.Count(); i++)
            collection.Move(collection.IndexOf(sorted[i]), i);
    }
}
public class Uzivatel : IComparable
{
    public int CompareTo(object o)
    {
        Uzivatel a = this;
        Uzivatel b = (Uzivatel)o;
        return Utils.LogicalStringCompare(a.Penize, b.Penize);
    }

    public string Penize { get; set; }
}

Mohl bys mi s tím pomoct ?

Když místo toho použiji:

string.Compare

Tak sice seřazování funguje, ale čísla to seřazuje špatně (např. Vidí to číslo 1005 jako měnší než číslo 15 -_-)

Editováno 11. května 20:22
 
Nahoru Odpovědět 11. května 20:20
Avatar
Odpovídá na lukas.sei
Michal Štěpánek:

Nemůže to mít souvislost s tím, že nemáš "public"¨

static class Extensions

?

Nahoru Odpovědět 11. května 20:50
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
lukas.sei
Člen
Avatar
Odpovídá na Michal Štěpánek
lukas.sei:

Ne. I když to změním na:

public static class Extensions

Tak to ukazuje tu samou chybu. :/
A chyba přetrvává, i když u obou to "public" odstraním.

Editováno 12. května 6:05
 
Nahoru Odpovědět 12. května 6:03
Avatar
lukas.sei
Člen
Avatar
lukas.sei:

Tak už jsem to vyřešil. Byla to chyba mojí nepozornosti.
Ale teď mám další problém, s kterým mi doufám poradíte.

Pomocí ToString() do toho listboxu následně vypisuji dvě proměnné (Jméno a Peníze), ale můj problém je, že to není zarovnané. Já bych tyto dvě proměné chtěl v tom listboxu zarovnat do dvou sloupců.
Je to možné ?

Takhle se to vypisuje teď:

bustercze   258
JohnyPrcina   147
dalšíHráč   42

Jak bych chtěl, aby se to vypisovalo:

bustercze               258
JohnyPrcina             147
dalšíHráč               42

Kód mojeho ToString() ve třídě Uživatel.:

public override string ToString()
        {
            return string.Format("{0}   {1}", Jmeno, Penize);
        }

Znova předem děkuji.

 
Nahoru Odpovědět 12. května 16:14
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.