Как я могу заставить пользовательский элемент управления расширить класс, расширяющий UserControl?
Я хочу попытаться создать MVC-проект для моего маленького приложения.
У меня есть обычный класс Csharp класса ViewBase, который расширяет UserControl. Это один файл .cs.
У меня есть несколько классов, которые я хочу расширить ViewBase. Это фактические UserControls, поэтому они имеют код за .cs файлом и .xaml файлом.
Однако CSharp говорит мне, что для этих классов их базовый класс "отличается от объявленного в других частях".
Это то, что я хочу сделать вообще? Что я делаю неправильно?
Обратите внимание, что я не изменял файлы XAML, поэтому они все еще используют теги.
Вот соответствующий код:
// 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;
}
}
Ответы
Ответ 1
Обратите внимание, что я не изменял свой XAML файлов, поэтому они все еще используют теги
Это ваша проблема. Вам нужно будет изменить:
<UserControl ...>
...
</UserControl>
к
<local:ViewBase xmlns:local="clr-namespace:..."
...
</local:ViewBase>
Проблема заключается в том, что вы сообщаете компилятору, который вы наследуете ViewBase
в одном месте (файл .cs) и UserControl
в другом (файл .xaml).