C# 带有GTK的右对齐弹出菜单#
我在应用程序的最右边有一个按钮。单击时,我想在按钮下方显示一个菜单,但右对齐。(想想谷歌chrome菜单) 这就是我到目前为止所做的:C# 带有GTK的右对齐弹出菜单#,c#,.net,mono,gtk#,C#,.net,Mono,Gtk#,我在应用程序的最右边有一个按钮。单击时,我想在按钮下方显示一个菜单,但右对齐。(想想谷歌chrome菜单) 这就是我到目前为止所做的: protected virtual void HandleMenuClicked (object sender, System.EventArgs e) { Menu menu = new Menu(); menu.Add(new MenuItem("About")); menu.ShowAll(); menu.Popup(nul
protected virtual void HandleMenuClicked (object sender, System.EventArgs e)
{
Menu menu = new Menu();
menu.Add(new MenuItem("About"));
menu.ShowAll();
menu.Popup(null,null,MenuPosition,0,0);
}
private void MenuPosition(Menu menu, out int x, out int y, out bool pushIn)
{
_menuButton.ParentWindow.GetOrigin(out x, out y);
int menuWidth = 75; //need to look up actual width.
x += _menuButton.Allocation.X - menuWidth;
y += _menuButton.Allocation.Y + _menuButton.Allocation.Height;
pushIn = true;
}
问题是我硬编码了菜单的宽度。如果添加了较长的菜单项,字体或主题发生了更改,则对齐方式将错误
我尝试按如下方式查找菜单的宽度:
int menuWidth = menu.Allocation.Width;
这不起作用,因为菜单尚未绘制,因此分配宽度为1。我相信您可以在该点使用SizeRequest。我相信您可以在该点使用SizeRequest