C# 从指定为字符串的工具提示生成用户界面
假设我在我的XAML中指定了一个C# 从指定为字符串的工具提示生成用户界面,c#,wpf,C#,Wpf,假设我在我的XAML中指定了一个工具提示: <TextBlock Text="Smurf"> <TextBlock.ToolTip> <ToolTip> <TextBlock Text="Muppet" /> </ToolTip> </TextBlock.ToolTip> </TextBlock> 现在,假设我直接在文本块上指定工具提示:
工具提示
:
<TextBlock Text="Smurf">
<TextBlock.ToolTip>
<ToolTip>
<TextBlock Text="Muppet" />
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
现在,假设我直接在文本块上指定工具提示
:
<TextBlock Text="Smurf" ToolTip="Muppet" />
您不能将字符串转换为工具提示,您可以做的是在代码隐藏中创建新的工具提示,并按如下方式设置内容
string str = ((TextBlock)sender).ToolTip.ToString();
ToolTip tip = new ToolTip();
tip.Content = str;
如果这样做,工具提示
实例将不包括样式/模板。我希望WPF公开了一种创建工具提示的方法,就像ItemContainerGenerator
为ItemsControls
@TorbjörnKalin所做的那样,您也可以从这里应用样式
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);
}
// ...
}
string str = ((TextBlock)sender).ToolTip.ToString();
ToolTip tip = new ToolTip();
tip.Content = str;