我想要在 TabControl 中为禁用的 TabItems 提供工具提示。在 Silverlight 中将工具提示放在禁用控件上的标准方法是将控件包装在具有工具提示的虚拟元素中,但我无法像那样访问 TabItem。TabItems 的宿主控件是一个 TabPanel,它似乎没有公开任何有用的属性。
有任何想法吗?
我想要在 TabControl 中为禁用的 TabItems 提供工具提示。在 Silverlight 中将工具提示放在禁用控件上的标准方法是将控件包装在具有工具提示的虚拟元素中,但我无法像那样访问 TabItem。TabItems 的宿主控件是一个 TabPanel,它似乎没有公开任何有用的属性。
有任何想法吗?
将 Toolip 放在禁用的菜单项上时我遇到了同样的问题,我通过将菜单项的 VisualState 更改为 Disabled 然后禁用 MouseButton 事件来解决它。
VisualStateManager.GoToState(tabitem, "Disabled", true);
但是,您必须小心其他事件,因为 VisualState 会根据不同的事件而改变。这不是一个完美的解决方案,但它适用于某些场景。
希望这可以帮助
我目前针对自己的问题的解决方法:
我有一个 TabControl Behavior,它可以找到“TabPanelTop”模板部分(或左侧、右侧或底部,具体取决于 TabStripPlacement)以及“TemplateTop”。我在 TemplateTop(它是一个网格)中添加了一个 Canvas,并用透明矩形填充它,其位置(使用 TransformToVisual)和大小被计算(和更新)与 TabItems 相同,它们是 TabPanelTop 的子项。
Rectangles 的可见性绑定到 TabItem IsEnabled 的逆,ToolTipService.ToolTip 绑定到 TabItem 上的 ToolTipService.ToolTip。
这有点吓人,但它有效且易于使用。