créer un contextmenu en utilisant ce code dynamiclyWPF comportement de menu contextuel étrange
protected MenuItem itemAdd, itemDelete, itemSelectBranch, itemDeleteClasp;
protected MenuItem itemCut, itemCopy, itemPaste, itemAddParent, itemPasteWithChildren;
protected MenuItem itemAddTask, itemAddExtTask, itemAddMileStone;
menu = new ContextMenu();
itemAdd = new MenuItem
{
HorizontalAlignment = HorizontalAlignment.Left,
HorizontalContentAlignment = System.Windows.HorizontalAlignment.Stretch,
Header = "Add"
};
itemDelete = new MenuItem
{
HorizontalAlignment = HorizontalAlignment.Left,
HorizontalContentAlignment = System.Windows.HorizontalAlignment.Stretch,
Header = "Delete"
};
itemSelectBranch = new MenuItem
{
HorizontalAlignment = HorizontalAlignment.Left,
HorizontalContentAlignment = System.Windows.HorizontalAlignment.Stretch,
Header = "Select"
};
itemAddTask = new MenuItem
{
HorizontalAlignment = HorizontalAlignment.Left,
HorizontalContentAlignment = System.Windows.HorizontalAlignment.Stretch,
Header = "Task",
};
itemAddParent = new MenuItem
{
HorizontalAlignment = HorizontalAlignment.Left,
HorizontalContentAlignment = System.Windows.HorizontalAlignment.Stretch,
Header = "Parent"
};
itemAddMileStone = new MenuItem
{
HorizontalAlignment = HorizontalAlignment.Left,
HorizontalContentAlignment = System.Windows.HorizontalAlignment.Stretch,
Header = "Do sth",
};
itemAddExtTask = new MenuItem
{
HorizontalAlignment = HorizontalAlignment.Left,
HorizontalContentAlignment = System.Windows.HorizontalAlignment.Stretch,
Header = "Do sth"
};
itemDelete.HorizontalAlignment = HorizontalAlignment.Left;
itemDelete.Click += itemDelete_Click;
itemDeleteClasp = new MenuItem
{
HorizontalContentAlignment = System.Windows.HorizontalAlignment.Stretch,
HorizontalAlignment = HorizontalAlignment.Left,
Header = "Do sthm"
};
itemDeleteClasp.Click += itemDeleteClasp_Click;
itemCopy = new MenuItem {Header = Do sth",HorizontalAlignment = System.Windows.HorizontalAlignment.Left};
itemCopy.Click += itemCopy_Click;
itemCut = new MenuItem
{
HorizontalAlignment = HorizontalAlignment.Left,
Header = "Cut"
};
itemPaste = new MenuItem
{
HorizontalAlignment = HorizontalAlignment.Left,
Header = "Paste"
};
itemAddParent = new MenuItem
{
HorizontalAlignment = HorizontalAlignment.Left,
Header = "Do sth"
};
itemPasteWithChildren = new MenuItem
{
HorizontalAlignment = HorizontalAlignment.Left,
Header = "some long text"
};
itemPasteWithChildren.Click += itemPasteWithChildren_Click;
itemAddParent.Click += itemAddParent_Click;
itemPaste.Click += itemPaste_Click;
itemCut.Click += itemCut_Click;
itemAddTask.Click += itemAddTask_Click;
itemAddExtTask.Click += itemAddExtTask_Click;
itemAddMileStone.Click += itemAddMileStone_Click;
itemAddParent.Click += itemAddParent_Click;
itemSelectBranch.Click += itemSelectBranch_Click;
itemAdd.Items.Add(itemAddTask);
itemAdd.Items.Add(itemAddExtTask);
itemAdd.Items.Add(itemAddMileStone);
itemAdd.Items.Add(itemAddParent);
menu.Items.Add(itemAdd);
menu.Items.Add(itemDelete);
menu.Items.Add(itemDeleteClasp);
menu.Items.Add(itemSelectBranch);
menu.Items.Add(itemCopy);
menu.Items.Add(itemCut);
menu.Items.Add(itemPaste);
Ce menu est attaché à textbox.contextmenu propriété. Cependant, le menu semble étrange. Chaque texte des éléments de menu est centré. Il semble assez laid et franchement parlant je ne sais pas pourquoi cela ressemble à ça. Quelqu'un pourrait-il m'expliquer comment je peux l'aligner à gauche?
Je connais déjà l'espace des icônes. Il semble que je dois emballer le texte d'en-tête dans un StacPanel. Cependant, je ne sais pas exactement comment le faire? Dois-je pour chaque en-tête créer un nouveau stacnpanel ?? – george
J'essayais d'utiliser la propriété horizontalalignment et horizontalcontentalignemt (et de les mettre à gauche) mais cela n'a pas fonctionné – george
Pouvez-vous fournir plus de code s'il vous plaît? Je ne suis pas capable de reproduire ceci sur ma boîte, donc c'est probablement un petit changement de configuration que vous devez faire. Quelle version de .NET utilisez-vous? J'avais quelques problèmes semblables au travail en utilisant .NET 3.5, mais cela avait plus à faire avec l'alignement vertical - l'alignement horizontal serait par défaut à gauche. – McStretch