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 如何判断它何时可见 的相关文章

  • std::list::clear 是否会使 std::list::end 迭代器无效?

    检查这个代码 include stdafx h include
  • 通过另一个列表更新列表(linq)

    我有类 Data 的对象列表 如下所示 class Data int code string name DateTime date update 我还有另一个课程列表 例如 class RefCodes int old code int n
  • EventHandler 应该始终用于事件吗?

    我一直在愉快地使用自定义委托类型和通用编写事件Action委托类型 没有真正考虑我在做什么 我有一些很好的扩展助手Action and EventHandler这使我倾向于使用那些预定义的委托类型而不是我自己的委托类型 但除此之外 除了惯例
  • 通过 SOAP 的 Gmt php 或 UTC C# 等效项

    is C DateTime UtcNow和 PHPdate c 是等价的 我怀疑 因为当我肥皂时 我得到了 C
  • 使用 Xamarin.Forms 和 Zxing 生成 QR 码

    我在网上看到了很多关于这个的内容 旧帖子 但似乎没有什么对我有用 我正在尝试从字符串中生成二维码并将其显示在应用程序中 这就是我一开始的情况 qrCode new ZXingBarcodeImageView BarcodeFormat Ba
  • 如何使用 C# 以编程方式编辑 Power BI Desktop 文档参数或数据源?

    我有一个在 Power BI Desktop 中内置的报告模板 并保存为 pbix 或 pbit 文件 该模板使用DirectQuery SQL数据库作为数据源 而服务器地址和数据库名称被提取到参数中 还有一个参数包含一个ReportId
  • C# Outlook 从收件人获取 CompanyName 属性

    我目前正在使用 C 编写 Outlook 2010 AddIn 我想要的是从我从 AppointmentItem 中提取的 Recipient 对象中获取 CompanyName 属性 因此 有了 AppointmentItem 的收件人
  • MSMQ接收和删除

    是否有任何选项可以在读取消息后将其从 MSMQ 中删除 比如 接收 删除可以作为原子操作运行吗 听起来您想查看下一条消息 然后在处理完成后接收它 Message message Queue Peek Queue ReceiveById me
  • 虚拟并行端口模拟器

    在我的计算机网络课程中 我们应该通过使用本机寄存器 例如使用 outportb 等命令 来学习并行端口编程 我没有并行端口 因为我住在 2011 年 但想练习这些程序 我使用 dosbox 安装了旧的 Turboc 3 IDE 有没有一个程
  • “没有合适的默认构造函数可用”——为什么会调用默认构造函数?

    我已经查看了与此相关的其他一些问题 但我不明白为什么在我的情况下甚至应该调用默认构造函数 我可以只提供一个默认构造函数 但我想了解它为什么这样做以及它会产生什么影响 error C2512 CubeGeometry no appropria
  • C 与 C++ 中的 JNI 调用不同?

    所以我有以下使用 Java 本机接口的 C 代码 但是我想将其转换为 C 但不知道如何转换 include
  • 在 C++ 代码 gdb 中回溯指针

    我在运行 C 应用程序时遇到段错误 在 gdb 中 它显示我的一个指针位置已损坏 但我在应用程序期间创建了 10 万个这样的对象指针 我怎样才能看到导致崩溃的一个 我可以在 bt 命令中执行任何操作来查看该指针的生命周期吗 谢谢 鲁奇 据我
  • 选择 asp.net CheckBoxList 中的所有项目

    ASP NET 和 C 我想要一个带有 全选 项目的复选框列表 当这个特定项目是 已选择 所有其他都将被选择 也 当选择被删除时 这个项目 也将来自所有人 其他物品 选中 取消选中 任何其他项目只会有一个 对特定项目的影响 无论选择状态如何
  • WPF DataGrid - 在每行末尾添加按钮

    我想在数据网格的每一行的末尾添加一个按钮 我找到了以下 xaml 但它将按钮添加到开头 有人知道如何在所有数据绑定列之后添加它吗 这会将按钮添加到开头而不是末尾
  • 在二进制数据文件的标头中放入什么

    我有一个模拟 可以读取我们创建的大型二进制数据文件 10 到 100 GB 出于速度原因 我们使用二进制 这些文件依赖于系统 是从我们运行的每个系统上的文本文件转换而来的 所以我不关心可移植性 当前的文件是 POD 结构的许多实例 使用 f
  • 解释这段代码的工作原理;子进程如何返回值以及在哪里返回值?

    我不明白子进程如何返回该值以及返回给谁 输出为 6 7 问题来源 http www cs utexas edu mwalfish classes s11 cs372h hw sol1 html http www cs utexas edu
  • 值和类型的简洁双向静态 1:1 映射

    我将从我想象如何使用我想要创建的代码开始 它不必完全像这样 但它是我在标题中所说的 简洁 的一个很好的例子 就我而言 它是将类型映射到相关的枚举值 struct bar foo
  • 使用 boost 异步发送和接收自定义数据包?

    我正在尝试使用 boost 异步发送和接收自定义数据包 根据我当前的实现 我有一些问题 tcpclient cpp include tcpclient h include
  • 在 C 中使用 #define 没有任何价值

    If a define没有任何价值地使用 例如 define COMMAND SPI 默认值是0吗 不 它的评估结果为零 从字面上看 该符号被替换为空 然而 一旦你有了 define FOO 预处理器条件 ifdef FOO现在将是真的 另
  • 是否可以使用 Dapper 流式传输大型 SQL Server 数据库结果集?

    我需要从数据库返回大约 500K 行 请不要问为什么 然后 我需要将这些结果保存为 XML 更紧急 并将该文件通过 ftp 传输到某个神奇的地方 我还需要转换结果集中的每一行 现在 这就是我正在做的事情 TOP 100结果 使用 Dappe

随机推荐

  • 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 如何判断它何时可见

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