如何在Silverlight中将菜单栏定位在TextBox上方?

时间:2011-02-05 18:52:54

标签: silverlight silverlight-4.0 textbox menubar

我想在Silverlight 4中将菜单栏添加到TextBox控件。(我将创建一个新的可重用控件。)菜单栏将包含一些图像按钮。这个想法是它通常会保持隐藏,只有当用户将他/她的鼠标光标放到TextBox区域时才会显示。如果在多线文本框中使用,整个菜单栏可以放入其中,这应该很容易。 (我希望。: - ))

但是TextBox处于单线模式时如何解决问题呢?我想把菜单栏放在TextBox上面。但我不知道如何做到这一点。有人可以帮忙吗?我需要让表单中的所有其他控件保持在他们的位置,并且只在我的文本框上方添加我的菜单栏。 (所以菜单栏不会隐藏文本框。相反,它会隐藏位于文本框正上方的其他控件。)它应该适用于所有形式的排列,如Grid,StackPanel,Canvas等。事实上它将类似于经典的右键单击上下文菜单,但不是模态。 (右键单击上下文菜单是模态的,即显示时您不能使用其他控件,当您单击其他任何位置时它会自动隐藏。只要用户将鼠标光标放在文本框或菜单栏上,我希望我的菜单栏保持可见状态。)

示例:文本框的坐标为top = 100,left = 20,bottom = 115,right = 120。所以我的菜单栏的坐标应该是底部= 100,左边= 20,右边和右边。顶部是基于菜单栏的大小。

如果在一个页面上使用多个文本框,则每个文本框都应该有自己的菜单栏。 (当然。)

2 个答案:

答案 0 :(得分:0)

您可以创建自己的控件(自定义控件或UserControl,无论您喜欢哪个应该工作),其中包含TextBox和菜单栏的视觉效果。

如果TextBox是单行,您可以在Popup显示菜单栏,只要鼠标悬停在TextBox上方,就会显示该菜单栏。

如果TextBox是多行的,那么您只需使用StackPanelGrid或其他任何方式进行布局,如果我理解您想要的内容。

答案 1 :(得分:0)

如果您使用此菜单,则无需编码:

http://sl4popupmenu.codeplex.com

要实现此行为,您需要将其IsPinned属性设置为true。