2011-03-23 53 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组装。