弹出窗口触发器无法正常工作

时间:2010-07-03 23:23:54

标签: wpf popup visibility

我在网格中有两个控件,一个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>

1 个答案:

答案 0 :(得分:1)

我认为你不想在Popup上绑定到IsMouseOver。只有当鼠标位于Popup窗口本身时才会出现这种情况,这只有在Popup已经打开时才会发生,所以你永远无法在第一时间打开它。

如果鼠标位于某个其他控件(例如Ellipse)之上,您可能希望弹出窗口打开。最简单的方法是ToolTip。如果在Ellipse上设置ToolTip属性,则当鼠标位于Ellipse上时,将显示ToolTip弹出窗口。像这样:

<Ellipse>
    <Ellipse.ToolTip>
        <Grid content goes here />
    </Ellipse.ToolTip>
</Ellipse>