【问题标题】:popup trigger not working as expected弹出触发器未按预期工作
【发布时间】:2011-03-11 12:47:06
【问题描述】:

我在一个网格中有两个控件,一个 Ellipse 和一个 Popup。这个想法是只有当视图模型中的 IsDirty 属性为 true 时才会显示这两个控件;如果是这样,如果相同的视图模型 IsValid,Ellipse 为绿色,否则为红色,而如果用户将鼠标悬停在弹出窗口上,则 Popup 显示消息。

Popup 的内容和绑定是正确的,所以我想知道我是否应该能够通过使用它自己的样式的触发器来控制它是否 IsOpen,如下面的代码所示。

干杯,
浆果

<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>

【问题讨论】:

    标签: wpf popup visibility


    【解决方案1】:

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

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

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

    【讨论】:

    • 但是,如果我想在内容中显示一个用户可以点击的超链接,是否需要弹出窗口?如果是这样,有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 2013-07-19
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多