我动态创建了一个Textblock,需要显示一个包装好的工具提示。
我在App.xaml中有一个资源
<Style TargetType="ToolTip" x:Key="ToolTipWrap">
<Style.Resources>
<Style TargetType="ContentPresenter">
<Style.Resources>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
</Style.Resources>
</Style>
</Style.Resources>
<Setter Property="MaxWidth" Value="500" />
</Style>
如何将样式分配给工具提示?
TextBlock tb = New TextBlock();
tb.ToolTip = some_long_text;
没有tb.ToolTip.Style属性和
tb.Style =(Style)FindResource(“ ToolTipWrap”)给出有关目标类型错误的错误
答案 0 :(得分:1)
自定义控件怎么样?
print(intent)
if let shortcut = INShortcut(intent: intent) {
let vc = INUIAddVoiceShortcutViewController(shortcut: shortcut)
vc.delegate = self
present(vc, animated: true)
}
else { print("INShortcut failed") }
TextblockWithTooltip.xaml
<UserControl x:Name="root"
x:Class="WpfApp4.TextblockWithTooltip"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
</UserControl.Resources>
<Grid>
<Grid.Resources>
<Style TargetType="ToolTip" x:Key="ToolTipWrap">
<Style.Resources>
<Style TargetType="ContentPresenter">
<Style.Resources>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
</Style.Resources>
</Style>
</Style.Resources>
<Setter Property="MaxWidth" Value="100" />
</Style>
</Grid.Resources>
<TextBlock x:Name="TooltippedTextblock"
Text="{Binding DisplayText, ElementName=root}"
ToolTipOpening="TooltippedTextblock_OnToolTipOpening">
<TextBlock.ToolTip>
<ToolTip x:Name="MainToolTip" Style="{StaticResource ToolTipWrap}" />
</TextBlock.ToolTip>
</TextBlock>
</Grid>
</UserControl>
TextblockWtihTooltip.xaml.cs
要使用它,请在我的MainView中:
using System.Windows;
using System.Windows.Controls;
namespace WpfApp4
{
public partial class TextblockWithTooltip
{
public TextblockWithTooltip()
{
InitializeComponent();
}
public static readonly DependencyProperty DisplayTextPropery =
DependencyProperty.Register(
nameof(DisplayText),
typeof(string),
typeof(TextblockWithTooltip),
new PropertyMetadata(string.Empty));
public static readonly DependencyProperty TooltipTextPropery =
DependencyProperty.Register(
nameof(TooltipText),
typeof(string),
typeof(TextblockWithTooltip),
new PropertyMetadata(string.Empty));
public string DisplayText
{
get => (string)GetValue(DisplayTextPropery);
set => SetValue(DisplayTextPropery, value);
}
public string TooltipText
{
get => (string)GetValue(TooltipTextPropery);
set => SetValue(TooltipTextPropery, value);
}
private void TooltippedTextblock_OnToolTipOpening(object sender, ToolTipEventArgs e)
{
MainToolTip.Content = TooltipText;
}
}
}
MainView的代码隐藏(动态添加控件):
<Window x:Class="WpfApp4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid x:Name="MainGrid">
</Grid>
</Window>
答案 1 :(得分:1)
这是我的解决办法。
full join
将最大宽度修改为100以进行测试(500宽度太长,为了快速测试将其设为100)...
这是工具提示的应用样式。 创建了'Tooltip'的新对象,并为其分配了'ToolTipWrap'样式。 Textblock工具提示文本已分配给“工具提示内容”
<Style TargetType="ToolTip" x:Key="ToolTipWrap">
<Style.Resources>
<Style TargetType="ContentPresenter">
<Style.Resources>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
</Style.Resources>
</Style>
</Style.Resources>
<Setter Property="MaxWidth" Value="100" />
</Style>