views:

186

answers:

1

I want to attempt an MVC design for my little app.

I have a normal Csharp class ViewBase which extends UserControl. It's a single .cs file.

I have multiple classes that I want to extend ViewBase. These are actual UserControls so they have a code behind .cs file and a .xaml file.

However, CSharp tells me that for these classes, their base class "differs from declared in other parts".

Is what I want to do possible at all? What am I doing wrong?

Note that I did not modify my XAML files, so they still use tags.

Here is the relevant code:

// This gives the error in question and ViewBase is underlined
// "Base class of LoginView differs from declared in other parts"
public partial class LoginView : ViewBase {
    public LoginView(Shell shell, ControllerBase controller) : base(shell, controller) {
        InitializeComponent();
    }
}

// This one is a single .cs file
public abstract class ViewBase : UserControl {
    public Shell Shell { get; set; }
    public ControllerBase Controller { get; set; }

    protected ViewBase(Shell shell, ControllerBase controller)
    {
        Shell = shell;
        Controller = controller;
    }
}
+2  A: 

Note that I did not modify my XAML files, so they still use tags

That's your problem. You'll need to change:

<UserControl ...>
    ...
</UserControl>

to

<local:ViewBase xmlns:local="clr-namespace:..."
    ...
</local:ViewBase>

The problem is you're telling the compiler you're inheriting ViewBase in one place (the .cs file) and UserControl in another (the .xaml file).

HTH,
Kent

Kent Boogaart
Thank you very much!
PRINCESS FLUFF