我在网格中有两个控件,一个Ellipse和一个Popup。我们的想法是,只有在视图模型中的IsDirty属性为true时才会显示这两个控件;如果是这样,如果相同的视图模型IsValid,则Ellipse为绿色,否则为红色;如果用户将鼠标悬停在弹出窗口上,则弹出窗口显示消息。
Popup的内容和绑定是正确的,所以我想知道我是否能够通过使用触发器来控制它是否是IsOpen,如下面的代码所示。
干杯,
Berryl
<Popup x:Name="dirtyPopup" AllowsTransparency="True" >
<Popup.Style>
<Style TargetType="Popup">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="IsOpen" Value="{Binding IsDirty}"/>
</Trigger>
</Style.Triggers>
</Style>
</Popup.Style>
<Grid content goes here />
</Popup>
答案 0 :(得分:1)
我认为你不想在Popup上绑定到IsMouseOver。只有当鼠标位于Popup窗口本身时才会出现这种情况,这只有在Popup已经打开时才会发生,所以你永远无法在第一时间打开它。
如果鼠标位于某个其他控件(例如Ellipse)之上,您可能希望弹出窗口打开。最简单的方法是ToolTip。如果在Ellipse上设置ToolTip属性,则当鼠标位于Ellipse上时,将显示ToolTip弹出窗口。像这样:
<Ellipse>
<Ellipse.ToolTip>
<Grid content goes here />
</Ellipse.ToolTip>
</Ellipse>