C# 从指定为字符串的工具提示生成用户界面

C# 从指定为字符串的工具提示生成用户界面,c#,wpf,C#,Wpf,假设我在我的XAML中指定了一个工具提示: <TextBlock Text="Smurf"> <TextBlock.ToolTip> <ToolTip> <TextBlock Text="Muppet" /> </ToolTip> </TextBlock.ToolTip> </TextBlock> 现在,假设我直接在文本块上指定工具提示:

假设我在我的XAML中指定了一个
工具提示

<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;