Xamarin Forms使用什么机制来检测内容页面和内容视图背后的代码中的命名控件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (79)

我需要实现一个派生自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");

如果您沿着XAML FindByName代码依赖项的兔子洞走下去,您将看到它基本上执行该视图范围内所有BindableObjects的迭代,直到找到匹配的名称或返回null

扫码关注云+社区

领取腾讯云代金券