我们说我在XAML中指定了ToolTip
这样的内容:
<TextBlock Text="Smurf">
<TextBlock.ToolTip>
<ToolTip>
<TextBlock Text="Muppet" />
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
从后面的代码中,我可以像这样检索ToolTip
:
var tooltip = textBlock.ToolTip as ToolTip;
现在,我要直接在ToolTip
上指定TextBlock
:
<TextBlock Text="Smurf" ToolTip="Muppet" />
当我以相同方式检索ToolTip
时,工具提示为null
,因为它是string
。
问题:如何将此string
转换为ToolTip
?
我正在寻找的是ItemContainerGenerator.ContainerFromItem()
的兄弟,它将对象转换为ItemsControls
的用户界面项。
更新
我相信我在PopupControlService
找到了相应的WPF代码...不幸的是,不是很可重用:
private void RaiseToolTipOpeningEvent()
{
// ...
object tooltip = ToolTipService.GetToolTip(o);
ToolTip tip = tooltip as ToolTip;
if (tip != null)
{
_currentToolTip = tip;
_ownToolTip = false;
}
else if ((_currentToolTip == null) || !_ownToolTip)
{
_currentToolTip = new ToolTip();
_ownToolTip = true;
_currentToolTip.SetValue(ServiceOwnedProperty, BooleanBoxes.TrueBox);
// Bind the content of the tooltip to the ToolTip attached property
Binding binding = new Binding();
binding.Path = new PropertyPath(ToolTipService.ToolTipProperty);
binding.Mode = BindingMode.OneWay;
binding.Source = o;
_currentToolTip.SetBinding(ToolTip.ContentProperty, binding);
}
// ...
}
答案 0 :(得分:0)
您无法将字符串转换为工具提示,您可以做的是在代码后面创建一个新的工具提示并设置这样的内容,
string str = ((TextBlock)sender).ToolTip.ToString();
ToolTip tip = new ToolTip();
tip.Content = str;
答案 1 :(得分:0)
我问了一个类似的问题here。它包含许多与此问题相关的信息。 accepted answer也可以用于此问题。