Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建可以通过xaml创建的自定义Xamarin.Forms组件?_C#_Xaml_Xamarin.forms - Fatal编程技术网

C# 如何创建可以通过xaml创建的自定义Xamarin.Forms组件?

C# 如何创建可以通过xaml创建的自定义Xamarin.Forms组件?,c#,xaml,xamarin.forms,C#,Xaml,Xamarin.forms,如果这个问题已经得到回答,我深表歉意。我想基于Xamarin.Forms创建一个具有特定行为的选项卡组件,其中选项卡定义xaml类似于: <Tab OnTabChange="Some_Event_Handler"> <Tabs> <Tab Text="xxx" /> <Tab Text="yyy" /> </Tab> </Tab> 是否有使用自定义xaml的可用资源可供我查看 非常感谢您的任何见解。最简单的方法是创建自

如果这个问题已经得到回答,我深表歉意。我想基于Xamarin.Forms创建一个具有特定行为的选项卡组件,其中选项卡定义xaml类似于:

<Tab OnTabChange="Some_Event_Handler">
<Tabs>
<Tab Text="xxx" />
<Tab Text="yyy" />
</Tab>
</Tab>

是否有使用自定义xaml的可用资源可供我查看


非常感谢您的任何见解。

最简单的方法是创建自定义渲染器。要做到这一点,最简单的方法是扩展现有的元素并赋予它新的功能

第一步是创建元素。在类内部创建一个静态只读BindableProperty和一个使用GetValue和SetValue的非静态属性。这将支持数据绑定

每个平台都需要知道如何呈现新控件,因此添加一个类,例如MyLabelRenderer.cs。在该文件中,您将希望覆盖可能需要呈现控件的方法

public class MyLabelRenderer : LabelRenderer
{
    protected override void OnElementChanged (
         ElementChangedEventArgs<Label> e)
    {
        base.OnElementChanged (e);
        MyLabel el = (MyLabel)this.Element;
        // custom stuff here
    }
}
公共类MyLabelRenderer:LabelRenderer
{
受保护的覆盖无效OnElementChanged(
ElementChangedEventArgs(e)
{
碱基。一个元素改变(e);
MyLabel el=(MyLabel)this.Element;
//这里有定制的东西
}
}
然后声明一个本地名称空间,并可以使用自定义对象

<local:myLabel  ... >

有关详细的漫游,请参见

希望有帮助


-jesse

看起来链接现在已经死了;)