UserControl 如何判断它何时可见

2024-01-06

我的主窗口中有一个用户控件,如下所示:

<ctrls:Login Visibility="{Binding DataContext.Vis,
                          RelativeSource={RelativeSource Mode=FindAncestor,
                                                          AncestorType=Window}},
                          Converter={StaticResource BooelanToVisibilityConverter}"/>

因此它的可见性绑定到 MainWindow 的 ViewModel 中的属性 Vis。

我想知道的是,在 UserControl 的 ViewModel 中,当可见性发生变化时如何拾取?我想在可见时启动计时器并在隐藏时停止计时器。


你可以挂钩UIElement.IsVisibleChanged http://msdn.microsoft.com/en-us/library/system.windows.uielement.isvisiblechanged%28v=vs.110%29.aspx用户控件上的事件:

<ctrls:Login IsVisibleChanged="Control_VisibleChanged"/>

背后代码:

private void Control_VisibleChanged(object sender, 
                                        DependencyPropertyChangedEventArgs e)
{
    if ((bool)e.NewValue)
    {
       // Visible code here
    }
    else
    { 
       // Collapse code here
    }
 }

如果你想开始Timer,我认为从代码后面做到这一点没有问题。

但是,如果您仍然希望在 ViewModel 中收到通知,您可以创建一个ICommand在 UserControl ViewModel 中并使用绑定到此事件interaction triggers:

<ctrls:Login>
   <i:Interaction.Triggers>
      <i:EventTrigger EventName="IsVisibleChanged">
          <i:InvokeCommandAction Command="{Binding VisibleChangedCommand}"/>
      </i:EventTrigger>
   </i:Interaction.Triggers>
</ctrls:Login>

你可以参考这篇文章here http://www.codeproject.com/Articles/57664/Silverlight-and-WPF-Behaviours-and-Triggers-Unders如果交互触发器对您来说是新事物。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UserControl 如何判断它何时可见 的相关文章

随机推荐

  • withCriteria 两级深度关联 eager fetch grails

    我想急切地加载一个结构 在关联链中有两层深度 大致如下 class TopLevel String name LevelOne levelOne class LevelOne String name LevelTwo levelTwo cl
  • 非标准 HTTP 端口源的 URLConnection FileNotFoundException

    我试图使用 Apache AntGet task http ant apache org manual Tasks get html获取我们公司另一个团队生成的 WSDL 列表 他们将它们托管在 weblogic 9 x 服务器上http
  • SSRS:显示逗号而不是点

    我想在我的报告中使用逗号而不是点 我使用了这种格式 Format Fields True Value F2 但这向我展示了一个点 我怎样才能得到逗号 除了 niktrs 回答之外 还可以通过属性窗口设置报告的语言设置
  • Android Room - 具有附加字段的多对多关系

    I have a Many to Many relationship set up on my Room database denoted by the following diagram 我想向 CrossRef 表添加额外的字段 我的问
  • 在 Google Cloud 上的 Docker 上启动 TensorFlow

    我按照此处的说明在 Google Cloud 上的 Docker 上安装 TensorFlow http tensorflow org get started os setup html docker based installation
  • Snowflake:无法使用阶段(S3)- SQL 编译错误:阶段不存在或未授权

    我在 Snowflake 中创建了一个外部舞台 我也尝试过使用公共存储桶 CREATE OR REPLACE stage DATABASE SCHEMA STAGE NAME url s3 bucket CREDENTIALS AWS KE
  • C# web 和 ftp 爬虫库

    我需要一个库 希望是 C 语言 它可以作为网络爬虫来访问 HTTP 文件和 FTP 文件 原则上 我很高兴阅读 HTML 我想将其扩展到 PDF WORD 等 我对初学者的开源软件或至少对文档的任何指示感到满意 Check NCrawler
  • UsbConnection.bulkTransfer 返回“-1”。这是什么意思?

    根据文档 消极反应意味着失败 如何知道出了什么问题 有关于错误类型的完整文档吗 为了更好奇 我正在尝试通过 USB 上传 arduino sketch 首先 我通过关闭 打开 DTR RTS 然后使用 Stk500 协议发送数据来引起引导加
  • noscript 内容是否加载到 bg 中

    即使启用了 javascript html 标签 noscript 是否会在后台加载内容 我有一个随机图像 每次页面加载时都会由 JS 调用 但我希望抓取所有链接 而不仅仅是当前的随机链接 同时 我不希望页面加载速度减慢 因为图像在后台加载
  • jQuery.remove() - 有没有办法在删除对象后将其取回?

    我在这个问题上基本上有同样的问题 Flash 视频仍在隐藏的 div 中播放 https stackoverflow com questions 1806032 flash video still playing on div that i
  • 为列提供多个索引/标题

    我正在使用 pandas 数据帧 这些数据帧本质上是这样的时间序列 level Date 1976 01 01 409 67 1976 02 01 409 58 1976 03 01 409 66 我想要的是级别列的多个索引 标题 如下所示
  • SQL Server 存储过程中的动态数据源

    我有一个包含多个数据库的 SQL Server 我有一个主数据库 其中包含多个包含实体和 ID 号的表 然后 每个实体都有一个与其所有信息相关的数据库 不是表 而是数据库 例如 如果 MAIN 数据库中的实体的 ID 号为 1 则同一 SQ
  • 如何从iPhone文档目录中读取pdf文件?

    目前我正在iPhone应用程序中工作 我在资源文件夹中有一个pdf文件 本地pdf文件 然后我成功读取了该pdf文件 paper pdf 下面我提到了读取本地pdf文件供您参考 Example CFURLRef pdfURL CFBundl
  • 如何从内存中的流式 zip 文件访问 zipEntry

    我目前正在实现一个电子阅读器库 skyepub http skyepub net 这要求我实现一个方法来检查 zipEntry 是否存在 在他们的演示版本中 解决方案很简单 public boolean isExists String ba
  • Firefox 报告“未找到支持格式和 Mime 类型的视频”

    此代码适用于 mp4 视频 但不适用于 3gp avi and flv files
  • 如果实例变量仍然有引用,Java GC 会销毁对象吗?

    我已经在线阅读了一些 Java 垃圾收集指南 但我仍然有点不清楚 并且想确保我的代码中没有内存泄漏 Java GC 是否会收集失去引用的对象 但其变量仍然具有引用 假设我有 SomeObject public class SomeObjec
  • freepascal正则表达式替换

    有没有一种简单的方法可以在 FreePascal Lazarus 中进行 RegExp 替换 四处寻找 我发现我可以相当容易地进行匹配 但我正在努力寻找进行搜索和替换的函数 我想要实现的目标如下 我有一个 XML 文件加载到 SynEdit
  • Jquery 循环调整大小

    我正在尝试让 Jquery Cycle 调整大小 到目前为止 我已经部分成功 它调整了大小 但幻灯片过渡有问题 我不明白为什么 这是整个页面http dl dropbox com u 8847353 Jai Sandhu Design Po
  • 当 select 语句没有返回行时如何返回默认值

    我有一个 select 语句 它返回两列 一个日期列和一个count value 柱子 当 的时候count value 列没有任何记录 我需要它返回 0 目前 它只是一起跳过该日期记录 这是查询的基础知识 select convert v
  • UserControl 如何判断它何时可见

    我的主窗口中有一个用户控件 如下所示