我有一个3D渲染,可能在鼠标下有一个实体。我想要一个ToolTip,其中包含有关该实体的信息,并且可以使用下面的代码实现此目的。请注意,当鼠标悬停在实体上时,提示始终可见,如果没有,则隐藏。
// Would like to do this in XAML - it must be possible but not sure how
string toolTipString = null;
public void SetToolTipString()
{
var e = _worldViewModel.MouseOverEntity;
string newTip = e == null ? null : e.Entity.Name;
if (newTip != toolTipString)
{
toolTipString = newTip;
if (newTip == null)
{
if (ToolTip != null)
{
((ToolTip)ToolTip).IsOpen = false;
}
ToolTip = null;
}
else
{
ToolTip = new ToolTip { Content = toolTipString, IsOpen = true, StaysOpen = true };
}
}
}
我尝试了这个,但它不起作用:
<ToolTip
StaysOpen="True"
IsOpen="{Binding Path=PlacementTarget.DataContext.IsMouseOverEntity,
RelativeSource={RelativeSource Self}}"
Content="{Binding Path=PlacementTarget.DataContext.MouseOverEntity.Entity.Name,
RelativeSource={RelativeSource Self}}"/>
有没有办法在XAML中实现它?
答案 0 :(得分:2)
工具提示类实际上是使用Popup class实现的。您应该使用Popup类尝试上述相同的操作。让它显示你想要的位置可能有点棘手(我遇到了一些问题,但我还没有足够的参与课程)。
<Canvas Margin="5" Background="Red" Width="200" Height="150" >
<Ellipse Name="ellipse1"
Canvas.Top="60" Canvas.Left="50"
Height="85" Width="60"
Fill="Black"/>
<Popup IsOpen="{Binding Path=PlacementTarget.DataContext.IsMouseOverEntity,
RelativeSource={RelativeSource Self}}" PlacementTarget="{Binding ElementName=ellipse1}" Content="{Binding Path=PlacementTarget.DataContext.MouseOverEntity.Entity.Name,RelativeSource={RelativeSource Self}}" />
</Canvas>
HTH