2013-06-28 2 views
0

주 프로젝트에서 내 Assets 어셈블리에 정의 된 컨트롤을 성공적으로 추가 할 수 있습니다. 예를 들어WPF : 다른 어셈블리에 정의 된 사용자 정의 컨트롤의 인스턴스에 Name 또는 EventHandler를 추가 할 수 없습니다.

,이 같은 컨트롤이 같은

using System.Windows.Controls; 
namespace AdvancedAudioGui.Assets.Controls 
{ 
    public class MyControl: Control 
    { 
     public string MyProperty { get; set; } 
    } 
} 

작품 :

<UserControl x:Class="MyCompanyName.AdvancedAudioGui.Parts.MyPart" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:controls="clr-namespace:AdvancedAudioGui.Assets.Controls;assembly=AdvancedAudioGui.Assets" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300"> 
<Grid> 
     <controls:MyControl /> 
</Grid> 

하지만 (주 좋아하지 : 똑같은 이름 또는 이벤트 핸들러 발생 MouseDown과 유사) :

<UserControl x:Class="MyCompanyName.AdvancedAudioGui.Parts.MyPart" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:controls="clr-namespace:AdvancedAudioGui.Assets.Controls;assembly=AdvancedAudioGui.Assets" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300"> 
<Grid> 
     <controls:MyControl x:Name="MyInstance"/> 
</Grid> 

나는 오류 얻을 :

이 형식 또는 네임 스페이스 이름 '자산'이 네임 스페이스에 존재하지 않는 '를 OurCompanyName.AdvancedAudioGui'(당신이 어셈블리 참조가없는?)

내가 작성하는 경우 그들 뒤에 코드에서 내가 xmlns 문제가 있어야합니다 그래서 나는 그것을 볼 수 없습니다 이름을 추가 할 수 있습니다. 어떤 아이디어?

감사합니다.

+0

2 개의 프로젝트와 하나의 컨트롤로 새로운 기본 솔루션을 만드는 경우이 문제가 발생하지 않습니다. 나는이 문제를 일으킨 실제 솔루션에서 내가 한 것을 발견 할 수 없다. –

답변

1

와우, 마침내 이것을 알아 냈습니다. 잘만되면 그것은 같은 문제를 가지고있을만큼 충분히 재수가없는 다른 누군가를 도울 것이다.

주요 프로젝트 네임 스페이스 : CompanyName.AdvancedAudioGui

자산 프로젝트 네임 스페이스 : AdvancedAudioGui.Assets

나는 X 추가

: 컨트롤의 인스턴스에 이름 속성을 다음과 같이

OLD 네임 스페이스이었다 자산 프로젝트에 정의 된 기본 프로젝트에서 오류가 발생하여 실패합니다.

'Assets'유형 또는 네임 스페이스 이름이 'OurCompanyName.AdvancedAudioGui'네임 스페이스에 없습니다. 어셈블리 참조가 누락 되었습니까?)

자산 프로젝트의 네임 스페이스를 주 프로젝트와보다 가깝게 변경하면 오류가 사라집니다.

주요 프로젝트 네임 스페이스 : (동일 이전) CompanyName.AdvancedAudioGui

자산 프로젝트 :

새로운 네임 스페이스는 다음과 같습니다 CompanyName.AdvancedAudioGui.Assets

후자의 방법은 어쨌든 바람직하지만 메인 네임 스페이스의 애셋 네임 스페이스가 xaml 네임 스페이스를 파싱하려고 할 때 컴파일러를 혼란스럽게하는 것으로 보입니다.

어쩌면 누군가가 왜 그런지 알 것입니다 ...?

+0

또한 원래 네임 스페이스를 AdvancedAudioGui2.Assets로 변경해도 효과적이었습니다. –