WPF UserControl 继承:找不到命名空间

问题描述 投票:0回答:2

我正在关注这篇文章

我有一个如下所示的用户控件:

<common:ViewBase
    x:Class="MyNamespace.MyView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:common="clr-namespace:Common;assembly=Common">
</common:ViewBase>

我的代码如下所示:

namespace MyNamespace
{
    public partial class MyView : ViewBase
    {
        public MyView()
        {
            InitializeComponent();
        }
    }
}

ViewBase 看起来像这样:

namespace Common
{
    public class ViewBase : UserControl
    {
    }
}

但它拒绝构建,我不断收到以下错误: 未找到类型“common:ViewBase”。验证您没有缺少程序集参考并且所有参考程序集均已构建。

我按照另一篇文章的一些建议将 ViewBase 移至单独的程序集,但我也尝试将其放入同一个程序集中。有谁知道如何解决这个问题?

c# wpf user-controls
2个回答
1
投票

我能够使用您的代码作为示例进行编译并拥有单独的程序集。如果将其放入单独的程序集中,则必须确保在派生的 UserControl 正常工作之前构建该程序集。如果它位于单独的程序集中,请验证您是否具有 UserControl 的正确引用。在构建该项目之前,我必须添加PresentationCore、PresentationFramework、System.Xaml 和WindowsBase。为了使用引用进行构建,我必须从其他项目中排除派生的 UserControl。

这是一个先有鸡还是先有蛋的情况。在我构建另一个程序集后,我就能够构建派生的 UserControl 所在的程序集。

如果单独的程序集中没有基本 UserControl,请验证 Xaml 命名空间是否正确:

xmlns:common="clr-namespace:Common;assembly=Common" // separate assembly
xmlns:common="clr-namespace:Common" // same assembly

如果您仍然遇到问题,请发布更多代码和/或更多错误消息(如果有多个)。这可能是另一个错误消息才是真正的罪魁祸首。


0
投票

我已经与同样的问题斗争了两周,并且感到绝望。我的任务是使用 xmlns:local="clr-namespace:myPresentationLayernamespace" 和 将完整的窗口加载为 UserControl。什么都没起作用。在与 Bing 进行几次会话后,它将我重定向到这篇文章及其线索:“在构建该项目之前,我必须添加PresentationCore、PresentationFramework、System.Xaml 和WindowsBase”。实际上,我只找到并安装了 System.Runtime.WindowsRuntime.UI.Xaml nuget 扩展,结果是即时的:所有构建错误都消失了。我不必将任何组件移出项目。刚刚安装了扩展。 对这篇文章和 Bing 的帮助非常满意。

© www.soinside.com 2019 - 2024. All rights reserved.