2012-09-13 42 views
2

我想要爲TabControl中的禁用TabItems提供工具提示。在Silverlight中將工具提示放到禁用控件中的標準方式是將控件包裝在具有工具提示的虛擬元素中,但我無法像這樣獲取TabItem。 TabItems的主機控件是一個TabPanel,它似乎沒有公開任何有用的屬性。禁用TabItem的工具提示

任何想法?

回答

0

我對我自己的問題目前的解決方法:

我有一個發現「TabPanelTop」模板部分TabControl的行爲(或左,右,或底部取決於TabStripPlacement) ,以及「TemplateTop」。我在TemplateTop(它是一個Grid)中添加一個Canvas,並使用透明矩形填充它,這些透明矩形的位置(使用TransformToVisual)和大小計算(和更新)與TabPanelTop的子項TabItems相同。

Rectangles的可見性綁定到TabItem IsEnabled的反轉,並且ToolTipService.ToolTip綁定到TabItem上的ToolTipService.ToolTip。

這有點可怕,但它的工作原理和易於使用。

0

我把Toolip放在禁用的菜單項上有同樣的問題,我通過將菜單項的VisualState更改爲Disabled並禁用MouseButton事件來解決此問題。

VisualStateManager.GoToState(tabitem, "Disabled", true); 

雖然你必須小心其他事件,因爲VisualState會根據不同的事件而改變。這不是一個完美的解決方案,但它適用於某些場景。

希望這有助於

+0

嗯,有趣。正如你所說,這可能有點危險。 –