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

Posted

技术标签:

【中文标题】如何在 Silverlight 中的 TextBox 上方定位菜单栏?【英文标题】:How to position a menubar above TextBox in Silverlight? 【发布时间】:2011-02-05 18:52:54 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

您可以创建自己的控件(自定义控件或 UserControl,无论您喜欢哪个都可以),它具有 TextBox 和菜单栏的视觉效果。

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

如果TextBox 是多行的,你只需使用StackPanelGrid 或其他任何东西来像平常一样进行布局,如果我理解你想要什么的话。

【讨论】:

谢谢,我认为 Popup 类可以帮助我。【参考方案2】:

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

http://sl4popupmenu.codeplex.com

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

【讨论】:

以上是关于如何在 Silverlight 中的 TextBox 上方定位菜单栏?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不实际删除行的情况下明显折叠 Silverlight 4 ListBox 中的单行?

如何从 Silverlight 中的 HttpWebRequest.BeginGetRequestStream 更新我的 UI

Silverlight:如何访问 DataGrid RowDetailTemplate 中的控件

如何将 Windows 商店中的 Windows Phone 应用程序(8.1 XAML)迁移到 8.1 Silverlight?

我如何在 Silverlight 动画中添加声音?

如何在 XAML (Silverlight) 中以编程方式设置 TextBox 文本