Mar*_*426 7 xaml controltemplate xamarin.forms
我在App.xaml中定义了ControlTemplate.现在,我需要能够处理某些UI事件.在Visual Studio的XAML编辑器中,如果我将处理程序附加到事件,则在App.xaml.cs中创建处理程序.但是,我需要在使用此控件模板的页面中执行此操作.
我认为唯一的方法是遍历控件模板中的元素并找到正确的元素并在页面中创建处理程序.但是,我不确定如何从ControlTemplate对象访问元素.
Xamarin是否提供了一种窥视ControlTemplate内容的方法?
小智 6
如果您有Page实例,您可以将其转换为IPageController,并且它的InternalChildren属性包含模板中的控件。
这是我用来按名称查找控件的扩展方法
public static T FindTemplateElementByName<T> (this Page page, string name)
where T: Element
{
var pc = page as IPageController;
if (pc == null)
{
return null;
}
foreach (var child in pc.InternalChildren)
{
var result = child.FindByName<T> (name);
if (result != null)
{
return result;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
虽然这是一个老话题,但实际的 Xamarin Forms API 提供以下内容并且开箱即用:
contentView.GetTemplateChild("nameOfTheControl")
Run Code Online (Sandbox Code Playgroud)
我还没有找到一种方法来迭代控件模板子项。我使用模板绑定 https://developer.xamarin.com/guides/xamarin-forms/templates/control-templates/template-binding/ 绑定到命令对象,命令的属性在我的基页中定义,然后使用基本视图来定义我的命令并将它们设置为基本页面 OnAppearing 覆盖中的绑定支持属性。
我正在写一篇博客文章,当我有代码要展示时我会更新它。
| 归档时间: |
|
| 查看次数: |
3223 次 |
| 最近记录: |