C# 如何从Xamarin中的代码隐藏向堆栈布局添加自定义视图

C# 如何从Xamarin中的代码隐藏向堆栈布局添加自定义视图,c#,xaml,xamarin,C#,Xaml,Xamarin,我有一个Xamarin表单组件,它在Xaml中有一个StackLayout。我给它起了一个名字叫stackView 我有另一个自定义组件,我想从代码隐藏中以编程方式将其添加到堆栈布局中,但我得到了一个错误,我不知道为什么 我收到的错误表明我的自定义登录视图无法转换为Xamarin.Forms.view using System; using System.Collections.Generic; using Xamarin.Forms; namespace TechPact { pu

我有一个Xamarin表单组件,它在Xaml中有一个StackLayout。我给它起了一个名字叫stackView

我有另一个自定义组件,我想从代码隐藏中以编程方式将其添加到堆栈布局中,但我得到了一个错误,我不知道为什么

我收到的错误表明我的自定义登录视图无法转换为Xamarin.Forms.view

using System;
using System.Collections.Generic;

using Xamarin.Forms;

namespace TechPact
{
    public partial class CustomView : ContentPage
    {
        public CustomView()
        {
            InitializeComponent();
            stackView.Children.Add(new CustomLoginView());
        }
    }
}
这是我的登录视图

?xml version="1.0" encoding="UTF-8"?>
<ContentPage
    xmlns ="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    x:Class="TechPact.CustomLoginView">

    <StackLayout>
        <Button Text="Login with Facebook" />
    </StackLayout>
</ContentPage>

您的CustomLoginView是否扩展了ContentView或其他Xamarin表单视图?
如果您发布的代码确实从ContentView而不是页面派生出CustomLoginView,那么它应该可以工作。我不确定这是否是Xamarin Studio的错误,或者是否更改登录视图以扩展ContentView而不是ContentPage,但在我这样做之后,它现在可以工作了

它扩展ContentPage您的组件应该扩展ContentView,而不是ContentPage。您还可以扩展布局,如StackLayout或AbsoluteLayout,甚至其他视图,如DatePicker,您不能做的一件事是扩展ContentPage
using System;
using System.Collections.Generic;

using Xamarin.Forms;

namespace TechPact
{
    public partial class CustomLoginView : ContentPage
    {
        public TechPactLoginView()
        {
            InitializeComponent();
        }
    }
}