- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个问题,我使用 FrameworkElement 对象的“FindName()”方法来搜索该元素的子控件。
我注意到了一些有趣的行为,但似乎无法弄清楚。
如果用户滚动浏览器窗口以便控件本身不再在窗口框架的上下文中可见,则“FindName()”不会返回该元素。
但是,如果该控件在窗口框架内可见,它就会发现它很好。
这是一个已知的问题?有没有其他人遇到过这个问题?
我也不是在谈论控件的 Visibility 属性。可见性属性设置为可见。
更新
我试图在 ListBox 控件(我正在搜索的容器)上设置 VirtualizingStackPanel.VirtualizationMode="Standard",但它仍然没有找到指定的控件。
最佳答案
如果我理解正确,您是说当控件从应用程序的 ViewPort 滚动出来时,即使它的可见属性仍然为真,FrameworkElement.FindName("") 也找不到它。
我假设您已经完成了所有基础知识:Xaml 范围等。如果您动态添加控件,您确定您是从正确的父元素等开始的。如果是这样:
使用 RedGates Reflector 我们可以看到 FrameWorkElement.FindName 实现如下:
public object FindName(string name)
{
return XcpImports.DependencyObject_FindName(this, name);
}
[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);
[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);
agcore.dll (2.2M installed) - This is the core ActiveX control that is responsible for Silverlight rendering and events, including audio and video decoding.
npctrl.dll (460K) - A wrapper for agcore.dll that makes it run inside Firefox.
关于wpf - Silverlight:FrameworkElement.FindName() 在浏览器窗口中不是 "visible"时找不到控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7667392/
我覆盖了 ResourceDictionary Generic.xaml 中的控件模板。在那里我添加了一个按钮,我想在上面添加一些事件。 --Added my button
在 WPF 应用程序中,如果在 XAML 中声明了 ContentControl, 然后我可以使用 FindName 在代码中轻松引用它: ContentControl cc = Fin
我有一个窗口的 xaml,里面有一个未命名的边框控件。边框控件使用我编写的附加属性,附加属性基本上将边框控件的 Name 属性设置为已知值,例如“占位符”。加载窗口后,它会尝试通过附加属性赋予它的名称
我正在为学校编写一个简单的井字游戏。作业是用 C++ 编写的,但老师允许我使用 C# 和 WPF 作为挑战。我已经完成了所有的游戏逻辑并且表单也基本完成了,但是我遇到了困难。我目前正在使用 Label
为什么 FindName() 在以下示例中返回 null? XAML:
我创建了一个应用了 XAML 模板的自定义控件。在自定义控件中,我需要操作图像。为此,我尝试使用 FindName 在 OnApplyTemplate 中查找图像。但是,FindName 返回 nul
逐渐学会喜欢mono touch 是否有与 FindName 函数等效的函数,以便我可以从其“字符串”名称操作控件 最佳答案 UIKit 控件( View )没有名称,但它们有标签,标签是整数值 您可
在父控件中查找控件的 FramworkElement.FindName() 方法似乎应该直截了当... 但我正在升级,看起来框架不喜欢我正在尝试做的事情。 首先,我确实意识到有很多不同的做事方式,请记
模板
FindName 对我来说是坏的:( 我要找的对象就在那里。我有证据。 场景如下: ToggleButton button = (ToggleButton)sender; Popup popup =
我遇到了一个问题,我使用 FrameworkElement 对象的“FindName()”方法来搜索该元素的子控件。 我注意到了一些有趣的行为,但似乎无法弄清楚。 如果用户滚动浏览器窗口以便控件本身不
我看到我可以访问 ComboBox 的模板化部分( TextBox 、 PopUp 和 Button )通过 FindName方法。 TextBox应该可以使用 cb.FindName("PART_E
根据 C# 编译器和 Silverlight 2 文档,Silverlight 没有为 DataTemplate 类提供 FindName 方法。我想找到一个位于 ContentPresenter 内
我刚刚测试了来自 here 的早期 PowerShell WPF 示例 #requires -version 2 Add-Type -AssemblyName PresentationFramewor
好吧...这让我很困惑。我已经在我的 UserControl 子类中重写了 OnContentTemplateChanged 。我正在检查为 newContentTemplate 传入的值实际上等于
我目前有一个 WPF 项目,它有一个主窗口和许多作为该窗口子级的用户控件。此窗口的许多子项都是选项卡。我已经成功地用一个用户控件替换了我的主窗口,它实现了与主窗口几乎完全相同的功能。 用 UserCo
所以在下面的示例代码中,我创建了一个 UserControl UserControldChild,它是主窗口 Window1.xaml 的子项。为什么 FindName() 方法无法在下面的代码中找到
我是一名优秀的程序员,十分优秀!