簡體   English   中英

擺脫Visual Studio命名空間錯誤消息

[英]Get rid of Visual Studio Namespace error message

不幸的是,這是一個非常初學者的問題:

我正在做非常簡單的WPF教程,並且遇到了名稱空間問題。 我想根據教程對自定義對象進行簡單的分層樹視圖綁定。 我將對象放入自定義名稱空間“ MyNameSpace”,並在XAML中聲明了該名稱(xmlns:MyTree =“ clr-namespace:MyNameSpace”)。 我相信我不需要指定程序集,因為我只是在我的項目中而無需任何進一步的參考(新的和干凈的項目)。

我現在遇到的問題是,編譯器在以下位置給我一個錯誤

 <HierarchicalDataTemplate  DataType="{x:Type MyTree:MenuItemNew}"

與消息

名稱“ MenuItemNew”在名稱空間“ clr-namespace:MyNameSpace”中不存在

但是它確實存在! 並且它甚至可以編譯並正確啟動程序。 但是,由於“無效標記”,我再也看不到布局。

那么如何告訴XAML接受我的名稱空間? 還是解決此問題的最佳方法是什么?

這是XAML:

<Window x:Class="TreeViewTestC.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:MyTree="clr-namespace:MyNameSpace"
        Title="MainWindow" Height="350" Width="525">
    <Grid Margin="10">
        <TreeView Name="trvMenu">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate  DataType="{x:Type MyTree:MenuItemNew}" ItemsSource="{Binding Items}">
                    <TextBlock Text="{Binding Title}" />
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
    </Grid>
</Window>

這是我的MainWindow代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;
using System.Collections.ObjectModel;
using MyNameSpace;

namespace TreeViewTestC
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            MenuItemNew root = new MenuItemNew() { Title = "Menu1" };
            MenuItemNew childItem1 = new MenuItemNew() { Title = "Child item #1" };
            childItem1.Items.Add(new MenuItemNew() { Title = "Child item #1.1" });
            childItem1.Items.Add(new MenuItemNew() { Title = "Child item #1.2" });
            root.Items.Add(childItem1);
            root.Items.Add(new MenuItemNew() { Title = "Child item #2" });
            trvMenu.Items.Add(root);
        }
    }
}

namespace MyNameSpace
{
    public class MenuItemNew
    {
        public MenuItemNew()
        {
            this.Items = new ObservableCollection<MenuItemNew>();
        }

        public string Title { get; set; }

        public ObservableCollection<MenuItemNew> Items { get; set; }
    }
}

在我看來,您的主要應用程序名稱空間是TreeViewTestC不是 MyNameSpace 因此,即使您只有一個項目,也可能需要告訴編譯器您的MyNameSpace實際上在TreeViewTestC程序MyNameSpace 嘗試使用此代替:

xmlns:MyTree="clr-namespace:MyNameSpace;assembly=TreeViewTestC"

好的,我找到了解決方案。 該項目在網絡驅動器上。 將其移動到本地文件夾可以解決問題……伙計,真是一團糟。 這花了我很多時間,我需要網絡驅動器。

更多信息: 名稱空間“ clr-namespace:ABC”中不存在名稱“ XYZ”

非常感謝你的幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM