xamarin - 部分声明不得指定不同的基类

标签 xamarin xamarin.android xamarin.forms xamarin-studio

我反复收到此错误消息:部分声明不得指定不同的基类。有人可以告诉我这可能是什么原因。这是我的代码。

CashAdvancePage.xaml

    <?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="ebmsMobile.CashAdvancePage"
             Title="Cash Advance"
             BackgroundImage="bg3.jpg">
  <Label Text="This is the Cash Advance Page." VerticalOptions="Center" HorizontalOptions="Center" />
</ContentPage>

CashAdvancePage.xaml.cs
 using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

using Xamarin.Forms;

namespace ebmsMobile
{
    public partial class CashAdvancePage : ViewCell
    {
        public CashAdvancePage()
        {
            //InitializeComponent();
            //NavigationPage.SetHasNavigationBar(this, false);

            var image = new Image
            {
                HorizontalOptions = LayoutOptions.Start
            };
            image.SetBinding(Image.SourceProperty, new Binding("ImageUri"));
            image.WidthRequest = image.HeightRequest = 40;

            var nameLayout = CreateNameLayout();
            var viewLayout = new StackLayout()
            {
                Orientation = StackOrientation.Horizontal,
                Children = { image, nameLayout }
            };
            View = viewLayout;


        }

        static StackLayout CreateNameLayout()
    {
        var nameLabel = new Label
        {
            HorizontalOptions= LayoutOptions.FillAndExpand
        };
        nameLabel.SetBinding(Label.TextProperty, "DisplayName");

        var twitterLabel = new Label
        {
           HorizontalOptions = LayoutOptions.FillAndExpand,
           Font = Fonts.Twitter
        };
        twitterLabel.SetBinding(Label.TextProperty, "Twitter");

        var nameLayout = new StackLayout()
        {
           HorizontalOptions = LayoutOptions.StartAndExpand,
           Orientation = StackOrientation.Vertical,
           Children = { nameLabel, twitterLabel }
        };
        return nameLayout;
    }
    }
}

最佳答案

作为迟到的...
如果您试图为您的页面创建基类……但它失败了。您可以从您自己的自定义基类继承。
就是这样...
1:创建一个基础类页面(带有类背后的代码) :
例如,这是我的,但你的可能不同......

<?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="Pulse.Mobile.Views.BaseContentPage">
</ContentPage>


public partial class BaseContentPage : ContentPage
{
    #region <Fields & Constants>

    protected Style ValidationEntryErrorStyle = Application.Current.Resources["ValidationEntryErrorStyle"] as Style;
    protected Style FormEntryStyle = Application.Current.Resources["FormEntryStyle"] as Style;

    #endregion

    #region <Constructors>

    public BaseContentPage()
    {
        InitializeComponent();
    }

    #endregion

    #region <Events>

    protected override void OnAppearing()
    {
        base.OnAppearing();

        LogHelper.Trace($"Screen - {this}", "Browsed");
    }

    #endregion

    #region <Methods>

    protected bool ValidateKeyPress(Entry entry, TextChangedEventArgs e, string regularExpression)
    {
        var text = e.NewTextValue;

        // Allow Empty
        if(string.IsNullOrWhiteSpace(text))
            return true;

        var result = Regex.IsMatch(e.NewTextValue, regularExpression);
        return result;
    }

    protected void ValidateStyle(Entry control, bool isValid)
    {
        switch (isValid)
        {
            case false:
                control.Style = ValidationEntryErrorStyle;
                break;

            default:
                control.Style = FormEntryStyle;
                break;
        }
    }

    protected void ValidateStyle(Picker control, bool isValid)
    {
        switch (isValid)
        {
            case false:
                control.Style = ValidationEntryErrorStyle;
                break;

            default:
                control.Style = null;
                break;
        }
    }

    #endregion
}
2:在您的页面中引用基础类页面 :
确保您在“xmlns:views”中引用您的 View 。特别注意页面根元素:“<?xml version="1.0" encoding="utf-8" ?> <views:BaseContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:views="clr-namespace:Pulse.Mobile.Views;assembly=Pulse.Mobile" x:Class="Pulse.Mobile.Views.ShakeoutDocumentPage"> <ContentPage.Content> // YOUR AWESOME CONTENT GOES HERE... </ContentPage.Content> </views:BaseContentPage>

关于xamarin - 部分声明不得指定不同的基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37177154/

相关文章:

xamarin.ios - 如何为 Xamarin 使用(或转换)这个 NATIVE BLE DFU 库?

listview - 如何更改 Xaml 中 ListView 项目的背景颜色?

Xamarin.Forms:如何将 NavigationPage XAML 类添加到另一个 XAML 类?

android - 权限插件 - 照片和媒体库?

xamarin - 无法解析程序集 : 'Java.Interop'

c# - 如何在 Windows Phone 8 中导航页面

xaml - Xamarin.Forms:如何正确使用<OnPlatform>来选择要在TableSection中使用的控件?

c# - Xamarin 按钮点击处理异常

windows - 在 Mono 上使用 Mono for android

xamarin.ios - Reactive Extensions 2.1 PCL 与 Xamarin 兼容吗?