Diskuze: Prevedenie itemov z TreeView na itemy ContextMenu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
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...
Zkus si to vytvořit sám bez nějaké konverze a pak uvidíš, že to napíšeš za pár minut.
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...
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.
Zobrazeno 8 zpráv z 8.