Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
roks
Člen
Avatar
roks:29.6.2014 22:04

Zdravím, vedel by mi niekto poradiť, ako "prekonvertujem" TreeViewItem-y na MenuItem-y tak, že všetky itemy si zachovajú svojho rodiča (viď. obrázok) ?

 
Odpovědět
29.6.2014 22:04
Avatar
Odpovídá na roks
Michal Žůrek - misaz:29.6.2014 22:39

konvertor si asi budeš muset napsat sám... :(

 
Nahoru Odpovědět
29.6.2014 22:39
Avatar
roks
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
roks:29.6.2014 23:31

Toho som sa obával, lebo skúšal som to ale neviem ako spraviť, aby napr. 1.1 bolo rodičom pre 1.1.1 a pod :/ Ako iný problém nie je, len tento zádrhel...

 
Nahoru Odpovědět
29.6.2014 23:31
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na roks
Jan Vargovský:30.6.2014 0:06

Zkus si to vytvořit sám bez nějaké konverze a pak uvidíš, že to napíšeš za pár minut.

 
Nahoru Odpovědět
30.6.2014 0:06
Avatar
Odpovídá na roks
Michal Štěpánek:30.6.2014 8:43

Když si to napíšeš bez konvertování "od začátku" jako menu, tak zjistíš, že to budeš mít rychleji, než rozběháš nějaký konvertor... :-)

Nahoru Odpovědět
30.6.2014 8:43
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
roks
Člen
Avatar
roks:30.6.2014 14:05

Lenže ja potrebujem aby to automaticky vygenerovalo za chodu programu :)

 
Nahoru Odpovědět
30.6.2014 14:05
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na roks
Jan Vargovský:30.6.2014 18:30

Nedalo mi to.

public static class Extensions
{
    public static ContextMenu ConvertToContextMenu(this TreeView treeView)
    {
        var contextMenu = new ContextMenu();

        foreach (HeaderedItemsControl item in treeView.Items)
            contextMenu.Items.Add(GetCopy(item));

        return contextMenu;
    }

    private static MenuItem GetCopy(this HeaderedItemsControl control, bool fullTree = true)
    {
        MenuItem result = new MenuItem() { Header = control.Header };

        if (fullTree)
            foreach (HeaderedItemsControl item in control.Items)
                result.Items.Add(GetCopy(item));

        return result;
    }
}

testovací kód jsem měl podle tvého vzoru

var a1 = new TreeViewItem() { Header = "1" };
treeView.Items.Add(a1);
var a11 = new TreeViewItem() { Header = "1.1" };
a1.Items.Add(a11);
var a111 = new TreeViewItem() { Header = "1.1.1" };
a11.Items.Add(a111);

var a2 = new TreeViewItem() { Header = "2" };
treeView.Items.Add(a2);
var a21 = new TreeViewItem() { Header = "2.1" };
a2.Items.Add(a21);

btn.ContextMenu = treeView.ConvertToContextMenu();

btn je normalní Button na kterém jsem testoval to menu a treeView je normální TreeView podle tvého obrázku.

Editováno 30.6.2014 18:32
 
Nahoru Odpovědět
30.6.2014 18:30
Avatar
roks
Člen
Avatar
Odpovídá na Jan Vargovský
roks:2.7.2014 17:49

Ďakujem pekne :)

 
Nahoru Odpovědět
2.7.2014 17:49
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 8 zpráv z 8.