我開發了一個WPF示例項目。以編程方式顯示工具提示
這裏是主窗口的XAML標記:
<Window x:Class="ToolTipSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
WindowState="Maximized">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Button Click="OnButtonClick">Show ToolTip</Button>
<StatusBar Grid.Row="2">
<StatusBarItem>
<TextBlock Text="TextBlock With ToolTip">
<TextBlock.ToolTip>
<ToolTip x:Name="m_toolTip">
ToolTip
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
</StatusBarItem>
</StatusBar>
</Grid>
</Window>
這裏是主窗口的代碼隱藏而不使用語句:
namespace ToolTipSample
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void OnButtonClick(object p_sender, RoutedEventArgs p_args)
{
m_toolTip.IsOpen = true;
}
}
}
我想以編程方式顯示工具提示按鈕時,點擊。
我想要在其TextBlock父級上方顯示工具提示。
當鼠標光標位於TextBlock上並且在持續時間C近似等於5秒時,工具提示會自動顯示。
我希望在單擊按鈕時在C期間顯示工具提示。
我的目標沒有在當前的項目中實現。
單擊該按鈕時,工具提示顯示:
但是:
- 工具提示是從它的TextBlock父太遠。
- 工具提示不會自動隱藏
什麼我必須做的,以實現我的目標?
任何幫助將不勝感激。
偉大的答案!我完全忽略了'Placement'和'PlacementTarget',他們在我的測試項目中做了訣竅。但是我必須在點擊時設置PlacementTarget,否則它不會正確設置(在init中,ToolTip不在樹中,這是我猜測的原因)。 – icebat
@Sheridan我已經實現了Button的PreviewMouseDown事件的處理程序和Button的PreviewMouseUp事件的處理程序,就像您describeb一樣。但是,當鼠標光標位於TextBlock上時,工具提示在幾秒鐘內不顯示。 – user1139666
添加一些斷點並調試您的問題以查看正在發生的事情。我的例子工作得很好,所以你的*應該*也能夠正常工作。 – Sheridan