2013-09-06 2 views
0

Я следую this article.WPF UserControl Inheritence: пространство имен не найдено

У меня есть пользовательский элемент управления, который выглядит следующим образом:

<common:ViewBase 
    x:Class="MyNamespace.MyView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:common="clr-namespace:Common;assembly=Common"> 
</common:ViewBase> 

Мой код позади выглядит следующим образом:

namespace MyNamespace 
{ 
    public partial class MyView : ViewBase 
    { 
     public MyView() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

ViewBase выглядит следующим образом:

namespace Common 
{ 
    public class ViewBase : UserControl 
    { 
    } 
} 

Но он отказывается для сборки я продолжаю получать следующую ошибку: Тип «common: ViewBase» не был найденный. Убедитесь, что вам не хватает ссылки на сборку и что все сборки ссылок были созданы.

Я переместил ViewBase на отдельную сборку, следуя советам другого сообщения, но я также попытался поместить его в ту же сборку. Кто-нибудь знает, как это исправить?

+1

В каком пространстве имен есть объекты ViewBase и MyView? – JeremiahDotNet

+0

Дженерики не входят в пользовательский интерфейс. Создавайте общие ViewModels и оставляйте только Views. Эта статья принадлежит тому, кто не знает MVVM. –

+0

@JeremiahDotNet обновлен, чтобы показать пространства имен – ConditionRacer

ответ

0

Я смог скомпилировать, используя ваш код в качестве примера и имеющего отдельную сборку. Если вы поместите его в отдельную сборку, вам нужно будет убедиться, что он будет создан до того, как ваш производный UserControl будет работать. Если он находится в отдельной сборке, убедитесь, что у вас есть правильные ссылки для UserControl. Я должен был добавить PresentationCore, PresentationFramework, System.Xaml и WindowsBase до того, как этот проект будет построен. Чтобы получить это, со ссылками, мне пришлось исключить полученный UserControl из другого проекта.

Это был курица & яйцо сценария. После того, как я собрал другую сборку для сборки, я смог построить сборку, в которой жил производный UserControl.

Если у вас нет базового UserControl в отдельной сборке, проверьте пространство имен Xaml правильно:

xmlns:common="clr-namespace:Common;assembly=Common" // separate assembly 
xmlns:common="clr-namespace:Common" // same assembly 

Если вы все еще возникают проблемы, пожалуйста, напишите больше кода и/или более сообщений об ошибках, если у вас более одного. Это может быть другое сообщение об ошибке - настоящий преступник.

Смежные вопросы