我发现a solution有一个工具提示跟随光标/鼠标。
这对我很有用。但是,我似乎无法弄清楚如何将此方法应用于ListViewItem。以下是我的listview的一个XAML示例:
<ListView Name="lvBoxes" FontSize="9" Margin="0,0,0,5" Width="125"
ItemsSource="{Binding}"
SelectionChanged="lvBoxes_SelectionChanged"
MouseLeftButtonUp="lvBoxes_MouseLeftButtonUp">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<EventSetter Event="MouseMove" Handler="lvBoxesItem_MouseMove" />
<Style.Triggers>
<DataTrigger Binding="{Binding Verified}" Value="True">
<Setter Property="Background" Value="LightGreen" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Boxnum}" Header="BOX#" Width="50" />
<GridViewColumn DisplayMemberBinding="{Binding Qty}" Header="QTY" Width="50" />
</GridView>
</ListView.View>
我已尝试将<Setter x:Name="ttBox" Property="ToolTip" Value="A Tooltip" />
添加到<Style>
,但我无法在后面的代码中引用(在此示例中)ttBox
。
答案 0 :(得分:1)
我最初链接到的讨论让我尝试访问后面的代码中的ListViewItem.ToolTip
,如下所示(假设我已将<Setter x:Name="ttBox" Property="ToolTip" Value="A Tooltip" />
包含在我最初发布的XAML <style>
部分中):
private void lvBoxesItem_MouseMove(object sender, MouseEventArgs e)
{
ttBox.Placement = System.Windows.Controls.Primitives.PlacementMode.Relative;
ttBox.HorizontalOffset = e.GetPosition((IInputElement)sender).X + 10;
ttBox.VerticalOffset = e.GetPosition((IInputElement)sender).Y + 10;
}
我发现虽然我无法通过x:在后面的代码中访问ToolTip
,但我能够按照以下方式修改我的代码,以达到我想要的效果(这个要求您不要在XAML中设置ToolTip
属性:
ToolTip tt = new ToolTip(); // Initialized with the Window
private void lvBoxesItem_MouseMove(object sender, MouseEventArgs e)
{
ListViewItem lvItem = sender as ListViewItem;
lvItem.ToolTip = tt;
tt.Content = "Sample ToolTip Text";
tt.Placement = System.Windows.Controls.Primitives.PlacementMode.Relative;
tt.HorizontalOffset = e.GetPosition((IInputElement)sender).X + 10;
tt.VerticalOffset = e.GetPosition((IInputElement)sender).Y + 10;
}
但是,我应该注意,这只有在您不需要/想要将数据直接绑定到ToolTip
时才有效,在我的情况下,这不是必需的。