2011-03-23 84 views
1

使用下面的代碼:WPF XAML命名空間的問題

<ad:DockingManager x:Class="Main.AvalonDock.Views.AvalonDockView" 
      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:ad="clr-namespace:AvalonDock;assembly=AvalonDock" 
      xmlns:cal="http://www.codeplex.com/prism" 
      mc:Ignorable="d" 
      d:DesignHeight="293" d:DesignWidth="504"> 
    <ad:ResizingPanel Margin="0,10,0,10" Orientation="Horizontal" > 
     <ad:DockablePane cal:RegionManager.RegionName="MainLeftRegion" Name="leftDockablePane" /> 
     <ad:DocumentPane cal:RegionManager.RegionName="MainCenterRegion" Name="mainDocumentPane" /> 
     <ad:DockablePane cal:RegionManager.RegionName="MainRightRegion" Name="rightDockablePane" /> 
    </ad:ResizingPanel> 
</ad:DockingManager> 

我的項目名稱是Main.AvalonDock它使用AvalonDock控制。由於廣告名稱空間和項目名稱空間之間存在差異,因此不會進行編譯。有沒有解決方法?

繼承人的錯誤:

The type or namespace name 'DockablePane' does not exist in the namespace 'Main.AvalonDock' (are you missing an assembly reference?)

+2

您是否嘗試過在項目名稱中放入分號以查看是否出現問題?暫時將您的項目名稱更改爲「Main.Avalon_Dock」,看看是否是這個問題。我不認爲有改變或修改XAML命名空間解決方式的方法。 – 2011-03-23 17:17:19

+0

@Josh G - 是的,糾正了這個問題。它的名字太相似了。 – 2011-03-23 17:20:17

+0

雖然我很固執,但我不想重新命名我的項目以適應第三方控制 – 2011-03-23 18:15:15

回答

2

如果你看看在你的項目的obj文件夾中的AvalonDockView.g.cs(或AvalongDockView.g.vb),你會看到潛在的問題。

基本上,你最終的東西,如:

using Main.AvalonDock.Views { 
    internal AvalonDock.DockablePane leftDockablePane; 
    // ... 
} 

使用C#類型的分辨率規格,該AvalonDock解析爲您的命名空間,而不是一個在AvalonDock組裝。