我遇到通用Windows应用程序的问题,并在设计视图和混合中查看UserControl。
我在共享库中有一个BaseUserControl和一些ValueConverters。我在App.xaml中引用了值转换器,而BaseUserControl是我希望使用Blend来帮助设计的特定UserControl的Base。
我目前在Visual Studio XAML设计器和Blend中遇到设计时错误:
命名空间中不存在名称“BaseUserControl” “使用:MyProject.Controls”。
设计器视图和Blend显示一个包含消息的框:
无效标记 - 检查错误列表以获取更多信息
我可以构建项目并运行它,一切都显示出来并且工作正常。
如何在Designer / XAML View and Blend中识别共享库代码?
UserControl的定义如下:
<controls:BaseUserControl
x:Class="MyProject.Controls.Menu.LeftNavigation"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyProject.Controls.Menu"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="using:MyProject.Controls"
mc:Ignorable="d"
Background="#232323"
d:DesignHeight="800"
d:DesignWidth="110"
>
...
</controls:BaseUserControl>
背后的代码很简单:
namespace MyProject.Controls.Menu
{
public sealed partial class LeftNavigation : BaseUserControl
{
public LeftNavigation()
{
this.InitializeComponent();
}
}
}
答案 0 :(得分:2)
我注意到您使用controls:BaseUserControl
扩展为MyProject.Controls.BaseUserControl
。但是,在 Code Behind 中,您已将命名空间设置为MyProject.Controls.Menu
。这将阻止设计师找到您的控件。
将控制标记更改为:
xmlns:controls="using:MyProject.Controls.Menu"
或者,将后面的代码中的命名空间更改为MyProject.Controls
,然后您可以单独保留xmlns:controls
标记。
此外,我看到设计人员未能注意到在 Visual Studio 2013中开发的通用应用(现在称为 Windows应用)的共享库中的新控件即使名称空间正确。如果在将xaml标记添加到页面时共享库过时,则会发生这种情况。如果发生这种情况,请暂时删除您在xaml中暂时包含controls:BaseUserControl
的任何尝试。
然后,清理解决方案并重建它。这将允许共享库正确重建,将新标记暴露给设计器。最后,在构建成功后重新添加标记并重新构建。
我希望能有所帮助。我今天只是在努力解决这个问题。