【发布时间】:2023-03-28 04:20:01
【问题描述】:
我有一个附有工具提示的按钮。
ToolTip 中有数据绑定信息。
我在点击和鼠标悬停时都显示工具提示。
通过使用代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
tt = btn.ToolTip as ToolTip;
tt.IsOpen = true;
}
如果我单击该按钮,则会显示工具提示,但没有数据值。
但如果我将鼠标悬停在按钮上,它会正确显示。
重要
如果我先将鼠标悬停在它上面,获取工具提示,将鼠标移开,然后再次单击,它会正确显示。
所以我猜我需要在调用tt.IsOpen = true 时调用工具提示来获取数据绑定信息
如何通过手动调用实现tooltip的完整显示?
提前致谢。
更新
xaml 代码。
<Button Content="{x:Static prop:strings.Info}" Margin="2" HorizontalAlignment="Center" Click="Button_Click" >
<Button.ToolTip>
<ToolTip>
<ToolTip.Template>
<ControlTemplate TargetType="ToolTip">
<Border BorderBrush="Blue" BorderThickness="1" Background="White" CornerRadius="5">
<StackPanel Orientation="Vertical">
<DockPanel>
<TextBlock Text="{x:Static prop:strings.Laenge}" Margin="10" DockPanel.Dock="Left"/>
<TextBlock Text="{Binding LaengeD}" Margin="10" DockPanel.Dock="Right" />
</DockPanel>
<DockPanel >
<TextBlock Text="{x:Static prop:strings.Breite}" Margin="10" DockPanel.Dock="Left"/>
<TextBlock Text="{Binding BreiteD}" Margin="10" DockPanel.Dock="Right"/>
</DockPanel>
<DockPanel>
<TextBlock Text="{x:Static prop:strings.Hoehe}" Margin="10" DockPanel.Dock="Left"/>
<TextBlock Text="{Binding HoeheD}" Margin="10" DockPanel.Dock="Right"/>
</DockPanel>
<DockPanel>
<TextBlock Text="{x:Static prop:strings.Gewicht}" Margin="10" DockPanel.Dock="Left"/>
<TextBlock Text="{Binding Gewicht}" Margin="10" DockPanel.Dock="Right"/>
</DockPanel>
</StackPanel>
</Border>
</ControlTemplate>
</ToolTip.Template>
</ToolTip>
</Button.ToolTip>
</Button>
【问题讨论】:
-
我们只是猜测您的问题是什么,还是您向我们展示所有相关代码给我们一个线索?
-
ToolTip里面有数据绑定信息,在哪里?请发布 xaml。
-
@Sinatr 添加了 xaml 代码
-
ControlTemplate通常使用TemplateBinding。我不太确定普通绑定是否有效(您可能需要使用一些技巧,例如this)。你真的需要这里的模板吗?尝试简单地将Border和孩子放在工具提示内容中。 -
点击按钮总是会显示带有空白值的工具提示吗?还是仅在您将鼠标悬停在其上之前?如果悬停后点击它,是否仍然是同样的问题?
标签: c# wpf data-binding