Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I make a user control extend a class that extends UserControl?

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;
    }
}
like image 975
PRINCESS FLUFF Avatar asked Feb 15 '10 10:02

PRINCESS FLUFF


1 Answers

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).

like image 129
Kent Boogaart Avatar answered Oct 14 '22 00:10

Kent Boogaart