Silverlight:FrameworkElement.FindName() 在浏览器窗口中不“可见”时找不到控件

2024-02-03

我遇到一个问题,我使用 FrameworkElement 对象的“FindName()”方法来搜索该元素的子控件。

我注意到了一些有趣的行为,但似乎无法弄清楚。 如果用户滚动浏览器窗口,使得控件本身在窗口框架的上下文中不再明显显示,则“FindName()”不会返回该元素。 但是,如果该控件在窗口框架内可见,则它会发现它没问题。

这是一个已知的问题?以前有其他人遇到过这个吗?

我也不是在谈论控件的 Visibility 属性。可见性属性设置为可见。

Update我尝试在 ListBox 控件(这是我正在搜索的容器)上设置 VirtualizingStackPanel.VirtualizationMode="Standard",但它仍然找不到指定的控件。


如果我理解正确,您是说当控件滚动出应用程序的 ViewPort 时,即使它的可见属性保持为 true,FrameworkElement.FindName("") 也无法找到它。

我假设您已经完成了所有基础知识:Xaml 范围界定等。如果您动态添加控件,您确定您正在从正确的父元素等开始。如果是这样:

使用RedGates Reflector我们可以看到FrameWorkElement.FindName的实现如下:

public object FindName(string name)
{
    return XcpImports.DependencyObject_FindName(this, name);
}

XcpImports.DependencyObject_FindName 实现为

[SecuritySafeCritical]
internal static DependencyObject DependencyObject_FindName(DependencyObject referenceDO, string name)
{
    int num;
    IntPtr ptr;
    CheckThread();
    if (name == null)
    {
        throw new ArgumentNullException("name");
    }
    uint hr = FindNameNative(JoltHelper.Context, (uint) name.Length, name, referenceDO.NativeObject, out num, out ptr);
    GC.KeepAlive(referenceDO);
    if ((hr != 0) && (hr != 0x80004005))
    {
        throw Error.MarshalXresultAsException(hr);
    }
    return (DependencyObject) ConvertDO(ptr, num, true);
}

因此,除非您遇到异常,否则我认为最有趣的行可能是:

uint hr = FindNameNative(JoltHelper.Context, (uint) name.Length, name, referenceDO.NativeObject, out num, out ptr);

它正在逐步进入本机代码并通过 XcpImports 中的 dll 导入进行定义:

[DllImport("agcore", EntryPoint="FindName", CharSet=CharSet.Unicode)]
private static extern uint FindNameNative(IntPtr context, uint cString, [MarshalAs(UnmanagedType.LPWStr)] string name, IntPtr referenceObject, out int typeIndex, out IntPtr obj);

不要与 Developers Express 的 AgCore 混淆。

Ed Burnette 撰写的关于 ZdNet 的文章(大约 2007 年):

http://www.zdnet.com/blog/burnette/dissecting-silverlight/297 http://www.zdnet.com/blog/burnette/dissecting-silverlight/297

说:

agcore.dll(已安装 2.2M)- 这是核心 ActiveX 控件 负责Silverlight渲染和事件,包括音频和 视频解码。

它还在下面说:

npctrl.dll (460K) - agcore.dll 的包装器,使其在内部运行 火狐。

所以我的第一个问题是。您的问题在每个浏览器中都一致吗? 也许问题在于某些浏览器/版本中 agcore.dll 的包装器,而不是核心技术 (agcore.dll) 本身。

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

Silverlight:FrameworkElement.FindName() 在浏览器窗口中不“可见”时找不到控件 的相关文章

  • 使用 BlockingCollection 更新 ObservableCollection

    我订阅了一项服务 当收到新元素时 该服务将引发一个事件 我将此元素添加到BlockingCollection 我有第二个线程正在运行 它将循环BlockingCollection添加 更新可观察集合中的元素 问题是你如何添加Observab
  • 将多个实时视频流拉入 WPF

    我想创建一个应用程序 将由同轴电缆 hdmi 或其他标准提供的多个实时视频源拉入 WPF 中进行操作 即应用一些转换或像素着色器 然后将其输出到监视器 开始使用这个应用程序时我会考虑什么 有没有任何硬件可以让事情变得更容易 如果您通过同轴电
  • 将父控件的属性传递给子控件

    我正在为特定应用程序开发一组自定义控件 我想定义对于外观目的的控件集通用的属性 为了论证 让我们这样做CustomCtrl AccentColor 我想为我的 Windows 窗体定义相同的属性 即Form1 AccentColor当我更改
  • 确定我的 Silverlight 应用程序的版本

    我正在尝试确定 Silverlight 应用程序的版本号 目前我正在使用 string name Assembly GetExecutingAssembly FullName AssemblyName asmName new Assembl
  • 如何将 WPF UIElement 从可视化树移动到固定页面?

    我的 MVVM 应用程序使用屏幕上的视觉对象将屏幕内容渲染到打印文档 我的视图有一个ContentControl使用DataTemplate资源来确定要显示的内容 但是当我尝试将该内容添加到FixedPage对象 我得到一个Argument
  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • 在哪里可以找到 WPF 应用程序中 UI 的一些主题/演示?

    我想使用 xaml 中的 Visual Studio Designer 设计一个现代外观的 UI 它为我提供了一个很好的工具箱 我可以使用它通过拖放来直观地创建 UI 由于它几乎表现得像 HTML 我想知道它是否也有丰富的主题库 我找到了一
  • ReactiveUI 和 Caliburn Micro 一起?

    我一直在使用 Caliburn Micro 作为我们的 MVVM 框架对新的 Silverlight 应用程序进行一些原型工作 团队总体上对此感到满意 为了解决对服务的请求限制的一些问题 有人建议我研究 ReactiveUI 的 React
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 从固定文档中删除页面?

    如何从固定文档中删除页面 我添加这样的页面 Add page to pageContent PageContent pageContent new PageContent IAddChild pageContent AddChild fix
  • 调用线程无法访问该对象,因为另一个线程拥有它

    我已经阅读了很多关于此错误的帖子 但我不明白如何在我的解决方案中解决它 我有一个进度条对话框 其中包含一些逻辑 通过按钮单击从 MainFrame 调用 void OnBtnClick object sender RoutedEventAr
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • 用户控制事件处理程序在回发时丢失

    我有一个名为 LeftMenu 的菜单用户控件 它有一个链接项的项目符号列表 它在 ascx 页面上是这样的
  • 访问 XAML 中的静态字段

    如何在 xaml 中引用类的静态属性 换句话说 我想做这样的事情 Class BaseThingy public static readonly Style BaseStyle
  • WPF 如何从 DataTemplate 访问控件

    我有一个包含网格的数据模板 网格内有一个组合框
  • 如何从作为 UWP 运行的 WPF 应用程序处理文件激活?

    我有一个WPF我想要处理文件激活的应用程序 我找到了通过向注册表添加特定值来解决问题的解决方案 问题是最终的应用程序应该是UWP应用程序 我正在使用桌面桥来执行此操作 如果应用程序运行为UWP 它无法到达注册表来设置这些特定值 有没有其他方

随机推荐

  • 使用 Jest 和 React 测试库测试 `img.onLoad`/`img.onError`

    今天下午 我们的团队在使用 Jest 为我们的项目编写 React 测试库 RTL 测试时遇到了一个场景
  • 反序列化 JSON 时出错无法将 JSON 对象反序列化为“System.String”类型

    我有以下 JSON workspace name Dallas dataStores http 8080 geoserver rest workspaces Dallas datastores json coverageStores htt
  • 尝试在 Windows PC 上禁用处理器空闲状态(C 状态)

    我需要防止处理器进入空闲状态 非C0 C状态 诚然 我对处理器 C 和 P 状态了解不多 所以请耐心等待 我们使用来自第三方供应商的相机 该相机偶尔会提供损坏的帧 供应商已确定 当 CPU 进入空闲状态时 它会干扰通过火线传输帧 为了确认这
  • Python 和服务器负载

    有没有办法使用Python定期检查Linux机器的服务器负载并以某种方式通知我 Python 有一个函数可以获取系统的平均负载 作为 os 模块的一部分 gt gt gt import os gt gt gt os getloadavg 1
  • 如何为 ElevatedButton 上的背景颜色设置动画?

    当我的 ElevatedButton 将其状态更改为禁用时 我想在两种背景颜色之间创建淡入淡出 我该怎么做 final buttonStyle ElevatedButton styleFrom backgroundColor Colors
  • C++ 从进程获取用户名

    我有一个进程句柄 HANDLE hProcess OpenProcess PROCESS QUERY INFORMATION PROCESS VM READ 0 THE PROCESS ID 如何获取正在运行该进程的用户的用户名 我正在使用
  • ASP.NET Core Url.Action 返回空字符串

    在 stackoverflow 上浏览了 3 小时后 我没有找到问题的解决方案 所以我怀疑我的项目中有一些特别的东西 我在 Visual Studios 2017 上有一个 ASP NET Core 2 0 WebApplications
  • 获取初始实体框架迁移脚本

    我刚刚安装了 Entity Framework Migrations 向类添加了一个属性 并尝试了 EF Migrations 我的开发数据库得到了及时更新 到目前为止 一切都很好 现在 我想为此创建一个更改脚本initial使用生产数据库
  • 更改 Google 工作表上特定单元格的背景颜色

    我正在处理这个绑定到 Google Sheets 电子表格的脚本 我在其中从时间驱动的触发器运行这个函数 我希望能够定位工作表上的特定单元格 如果单元格值 打开 以便我可以更改单元格的背景颜色 我想知道我该如何去做这项工作 我能够定位单元格
  • 在 Meteor.js 中查找当前会话 ID

    如何找到客户端当前的Session Id 我能够获得看起来像是最后一个会话 ID 而不是当前会话 ID console log Meteor default connection lastSessionId 这个措辞有点令人困惑 但是 la
  • 无法在 p:media 中显示从 Primefaces 中的流内容生成的 PDF

    我正在尝试显示在新浏览器窗口中打开的内联 PDF 我有以下场景 在由ajax调用的一些ActionListen中 我生成PDF内容 将数据放入会话中 并发送要执行的Javascript window open打开新页面以显示 PDF 在打开
  • 如果日期带有前导零,则 getDay() 返回错误的日期[重复]

    这个问题在这里已经有答案了 我在使用 javascript 时遇到了这个问题 我从数据库中获取 yyyy mm dd 日期 但是当我想使用 getDay 获取星期几时 如果这一天带有前导零 我会得到错误的数字 我写了一个可能的解决方案来将
  • 在 LinkedIn 上分享 描述字段未显示在新用户界面中

    用户在新用户界面上通过 LinkedIn API 上的共享发布的帖子最多会显示在其帐户上 用户消息 评论 图像 标题和链接域 但是 有关在 LinkedIn API 上共享的文档 https developer linkedin com d
  • 搜索视图未显示在工具栏中

    我实际上在支持 AppCompat v7 lib 24 0 0 上的 Searchview 有问题 SearchView 不显示任何文本和输入文本 看屏幕截图 搜索查询工作完美 这是我的菜单 menu menu
  • 无法以 null 启动服务 [服务名称]

    我最近编写了一个 Android Widget 并在模拟器和我的 Galaxy S 上进行了测试 它在两者上都运行良好 在我将其发布到 Android 市场后 现在我收到了一些错误报告 我在 Widget 类的 onUpdate 中声明一个
  • Azure 函数无法启动 - “未响应端口 X 上的 HTTP ping”(Docker/VNet)

    我真的很难弄清楚如何设置使用 Docker 容器映像并连接到 VNet 的 Azure Function 我在任何地方都找不到此设置的任何示例 我遇到的主要问题是 在我的容器启动并运行后 它似乎没有响应底层框架用于确定该功能是否启动并运行的
  • codechef 和 spoj 问题中使用的 modulo 10^9+7 有何意义?

    我正在研究一个问题 http www codechef com SEPT14 problems CHEFLR它需要输出为 对于每行输出答案模 10 9 7 为什么是模 10 9 7包含在问题中吗 其意义何在 我不是在寻找问题的解决方案 仅该
  • 进度条与文件解压

    我正在尝试更新progress bar将文件解压缩到 SD 卡中 我的解压工作正常 但是progress bar没有出现 这是我在 mainactivity 中的代码 private ProgressBar bar Override pub
  • ORM 解决方案(JPA;Hibernate)与 JDBC

    我需要能够以每 5 秒至少 8000 个对象的一致速率在内存 HSQL 数据库中插入 更新对象 我在 Spring Hibernate JPA 和纯 JDBC 之间做了一些性能对比测试 我发现使用 HSQL 的性能有显着差异 使用 Spri
  • Silverlight:FrameworkElement.FindName() 在浏览器窗口中不“可见”时找不到控件

    我遇到一个问题 我使用 FrameworkElement 对象的 FindName 方法来搜索该元素的子控件 我注意到了一些有趣的行为 但似乎无法弄清楚 如果用户滚动浏览器窗口 使得控件本身在窗口框架的上下文中不再明显显示 则 FindNa