我试图模仿我继承的一些代码,并创建一个 WPF UserControl 使用同一库中的另一个 UserControl。
我创建了一个全新的项目,它是一个用户控件库。该库称为 MyLib。它在文件 UserControl1.xaml 中包含一个简单的 UserControl
<UserControl x:Class="MyLib.UserControl1"
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"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<TextBlock>Hello</TextBlock>
</Grid>
</UserControl>
然后我创建了另一个 UserControl(在同一个库/项目中),它将使用 UserControl1 作为它的一部分:
<UserControl x:Class="MyLib.UserControl2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:lib="clr-namespace:MyLib"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<lib:UserControl1 />
</Grid>
</UserControl>
我收到一条错误消息:
xmlns:lib="clr-namespace:MyLib"
说“必须为不属于项目的 XAML 文件指定错误 2 程序集。将其添加到项目后重新打开此 XAML 文件,关闭此文件并使用与之关联的项目重新打开它,或修改 clr 命名空间包括程序集的名称。”
但奇怪的是,当我添加该行时,我会自动完成:
<lib:UserControl1 />
我偶尔也会遇到奇怪的错误:
错误 1 未知的构建错误,“对象引用未设置为对象的实例。” 我的库
我可以在单独的项目(相同的解决方案,添加到 MyLib 的引用)中使用 UserControl1,如下所示:
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:lib="clr-namespace:MyLib;assembly=MyLib"
Title="MainWindow" Height="350" Width="525">
<Grid>
<lib:UserControl1 />
</Grid>
</Window>
作为健全性检查,我的 UserControl2 应该工作吗?自从我使用 WPF UserControls 以来已经有一段时间了,所以我想知道我是否在做一些愚蠢的事情。
更新 在新机器上全新安装 Windows 和 Studio 时复制。