使用GTK的右对齐弹出菜单#

时间:2011-05-22 10:08:15

标签: c# .net mono gtk#

我在应用程序的最右边有一个按钮。单击时,我想在按钮下方显示一个菜单,但右键与其对齐。 (想想谷歌浏览器菜单)。

这是我到目前为止所做的:

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。

1 个答案:

答案 0 :(得分:1)

我相信你可以在那时使用SizeRequest。