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