xamarin - Xamarin Forms 使用什么机制来检测内容页面和内容视图背后代码中的命名控件?
问题描述
我需要实现一个从 ControlTemplate 派生但能够检测代码隐藏文件中的控件的控件。我需要了解这在内容页面/视图中是如何工作的
解决方案
有一个名为 XamlG/UpdateDesignTimeXaml 的 MSBuild 任务生成具有您已x:Name
定义为全局命名空间类级变量的视图的分部类,从而生成以下变量代码:
private global::Xamarin.Forms.Entry someEntryControl;
然后在该文件的InitializeComponent
方法中,FindByName
扩展用于通过该变量名称的基于字符串的查找将实际运行时实例分配给先前定义的变量:
someEntryControl = global::Xamarin.Forms.NameScopeExtensions.FindByName<global::Xamarin.Forms.Entry>(this, "someEntryControl");
如果您深入 XAMLFindByName
代码依赖项的兔子洞,您将看到它基本上执行该视图范围内所有 BindableObjects 的迭代,直到找到匹配的名称或返回null
。
推荐阅读
- laravel - 调用未定义的方法 Illuminate\Database\Eloquent\Builder::transform()
- numpy - 从 。import _mklinit ImportError: DLL load failed: 找不到指定的模块
- android - 数据绑定:无法调用观察者方法/Resources$NotFoundException
- listview - 具有 AutoSize 高度的 Xamarin.Forms ListView
- openssl - 获取 RSA PRIVATE KEY 而不是 PRIVATE KEY
- c++ - 在类中使用对文字的 const 引用时 C++ O2 内存泄漏
- python - SharePlum - 共享点列表 - 删除记录
- css - SVG
到 CSS - bash - 删除包含 2 个单词的重复行
- collections - Anylogic中的集合快捷方式