本文整理汇总了C#中System.Windows.Controls.ContextMenu.UpdateLayout方法的典型用法代码示例。如果您正苦于以下问题:C# ContextMenu.UpdateLayout方法的具体用法?C# ContextMenu.UpdateLayout怎么用?C# ContextMenu.UpdateLayout使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Controls.ContextMenu
的用法示例。
在下文中一共展示了ContextMenu.UpdateLayout方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ShowContextMenu
internal virtual void ShowContextMenu(Card card)
{
if (Player.LocalPlayer.Spectator)
return;
// Modify selection
if (card == null || !card.Selected) Selection.Clear();
var menuItems = new CompositeCollection();
ContextGroup = group;
ContextMenu = new ContextMenu {ItemsSource = menuItems, Tag = card};
// card has to captured somehow, otherwise it may be overwritten before released in the OnClosed handler, e.g. when rightclicking on a card, then directly right-clicking on another card.
ContextMenu.Opened += (sender, args) =>
{
ContextGroup.KeepControl();
var c = ((ContextMenu) sender).Tag as Card;
if (c != null) c.KeepControl();
};
ContextMenu.Closed += (sender, args) =>
{
ContextGroup.ReleaseControl();
var c = ((ContextMenu) sender).Tag as Card;
if (c != null) c.ReleaseControl();
};
ContextCard = card;
menuItems.Clear();
if (card != null)
{
//var cardMenuItems = await CreateCardMenuItems(card, group.Definition);
var cardMenuItems = CreateCardMenuItems(card, group.Definition);
var container = new CollectionContainer { Collection = cardMenuItems };
menuItems.Add(container);
}
if (ShouldShowGroupActions(card))
{
var container = new CollectionContainer { Collection = CreateGroupMenuItems(group.Definition) };
menuItems.Add(container);
}
//else // Group is being shuffled
// return;
ContextMenu.IsOpen = false;
// Required to trigger the ReleaseControl calls if the ContextMenu was already open
ContextMenu.UpdateLayout(); // Required if the ContextMenu was already open
ContextMenu.IsOpen = true;
ContextMenu.FontFamily = groupFont;
ContextMenu.FontSize = fontsize;
}
示例2: ShowContextMenu
internal virtual void ShowContextMenu(Card card, bool showGroupActions = true)
{
// Modify selection
if (card == null || !card.Selected) Selection.Clear();
var menuItems = new CompositeCollection();
ContextGroup = group;
ContextMenu = new ContextMenu {ItemsSource = menuItems, Tag = card};
// card has to captured somehow, otherwise it may be overwritten before released in the OnClosed handler, e.g. when rightclicking on a card, then directly right-clicking on another card.
ContextMenu.Opened += (sender, args) =>
{
ContextGroup.KeepControl();
var c = ((ContextMenu) sender).Tag as Card;
if (c != null) c.KeepControl();
};
ContextMenu.Closed += (sender, args) =>
{
ContextGroup.ReleaseControl();
var c = ((ContextMenu) sender).Tag as Card;
if (c != null) c.ReleaseControl();
};
ContextCard = card;
menuItems.Clear();
if (group.CanManipulate())
{
if (card != null)
{
if (card.CanManipulate())
{
if (_cardHeader != null)
{
_cardHeader.Header = card.Name;
_cardHeader.Background = card.Controller.TransparentBrush;
menuItems.Add(_cardMenu);
}
}
else
{
var item = new MenuItem {Header = card.Name, Background = card.Controller.TransparentBrush};
item.SetResourceReference(StyleProperty, "MenuHeader");
menuItems.Add(item);
item = new MenuItem {Header = "Take control"};
item.Click += delegate { card.TakeControl(); };
menuItems.Add(item);
}
if (!card.FaceUp)
{
var peekItem = new MenuItem {Header = "Peek", InputGestureText = "Ctrl+P"};
peekItem.Click += delegate { ContextCard.Peek(); };
if (menuItems.Count == 0)
{
var item = new MenuItem {Header = card.Name, Background = card.Owner.TransparentBrush};
item.SetResourceReference(StyleProperty, "MenuHeader");
menuItems.Add(item);
}
menuItems.Add(peekItem);
}
}
if (showGroupActions)
menuItems.Add(_groupMenu);
}
else// if (!group.WantToShuffle)
{
menuItems.Add(CreateGroupHeader());
var item = new MenuItem {Header = "Take control"};
item.Click += delegate { group.TakeControl(); };
menuItems.Add(item);
menuItems.Add(new Separator());
item = CreateLookAtCardsMenuItem();
if (item != null) menuItems.Add(item);
}
//else // Group is being shuffled
// return;
ContextMenu.IsOpen = false;
// Required to trigger the ReleaseControl calls if the ContextMenu was already open
ContextMenu.UpdateLayout(); // Required if the ContextMenu was already open
ContextMenu.IsOpen = true;
ContextMenu.FontFamily = groupFont;
ContextMenu.FontSize = fontsize;
}