You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 5 WPF项目报错:同命名空间下TipBox控件不存在

问题描述

在.NET 5环境下基于Windows95-WPF项目开发时,遇到自定义控件识别问题:自定义控件TipBox与MainWindow同属RadioSim命名空间,且XAML已通过local前缀正确引用该命名空间,但始终报错“TipBox不存在于命名空间”。已尝试修改命名空间、校验文件引用等操作,当前仅需解决此控件识别问题,暂不处理依赖Windows95.dll的其他错误。


相关代码文件

MainWindow.xaml.cs

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;

namespace RadioSim
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

MainWindow.xaml(报错位于第94行)

<Window x:Class="RadioSim.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:RadioSim"
        xmlns:windows95="clr-namespace:Windows95;assembly=Windows95"
        mc:Ignorable="d"
        Title="MainWindow"
        Height="450"
        Width="800"
        Background="#C3C3C3"
        ResizeMode="NoResize"
        Icon="Images/windows.ico">
    <Grid>
        <StackPanel Orientation="Horizontal"
                    Margin="20,12,0,0"
                    HorizontalAlignment="Left"
                    VerticalAlignment="Top">
            <TextBlock Text="Welcome to"
                       FontFamily="Times New Roman"
                       FontSize="28"
                       FontWeight="SemiBold"
                       TextOptions.TextRenderingMode="Aliased"
                       TextOptions.TextFormattingMode="Display"
                       TextOptions.TextHintingMode="Fixed"
                       SnapsToDevicePixels="True" />

            <TextBlock Text="Windows"
                       FontFamily="Arial"
                       FontSize="28"
                       FontWeight="Black"
                       Margin="6,0,0,0"
                       TextOptions.TextRenderingMode="Aliased"
                       TextOptions.TextFormattingMode="Display"
                       TextOptions.TextHintingMode="Fixed"
                       SnapsToDevicePixels="True" />

            <TextBlock Text="95"
                       x:Name="WindowsVersionTextBlock"
                       FontFamily="Arial"
                       FontSize="28"
                       Margin="2,0,0,0"
                       TextOptions.TextRenderingMode="Aliased"
                       TextOptions.TextFormattingMode="Display"
                       TextOptions.TextHintingMode="Fixed"
                       SnapsToDevicePixels="True"
                       Foreground="White" />
        </StackPanel>

        <StackPanel Margin="0,48,16,0"
                    HorizontalAlignment="Right"
                    VerticalAlignment="Top">
            <Button Width="115"
                    Height="23"
                    Margin="0,0,0,7"
                    Content="What's New" />

            <Button Width="115"
                    Height="23"
                    Margin="0,0,0,7"
                    Content="Online Registration"
                    Click="OnlineRegistration_Click" />

            <Button Width="115"
                    Height="23"
                    Margin="0,0,0,7"
                    Content="Next Tip"
                    Click="NextTip_Click" />
        </StackPanel>

        <Button Width="115"
                Height="23"
                Margin="0,0,16,16"
                HorizontalAlignment="Right"
                VerticalAlignment="Bottom"
                Content="Close"
                Click="CloseButton_Click" />

        <Rectangle Stroke="#828282"
                   Width="115"
                   Height="1"
                   VerticalAlignment="Bottom"
                   HorizontalAlignment="Right"
                   Margin="0,0,16,51" />

        <Rectangle Stroke="#FFFFFF"
                   Width="115"
                   Height="1"
                   VerticalAlignment="Bottom"
                   HorizontalAlignment="Right"
                   Margin="0,0,16,50" />
        
        <local:TipBox HorizontalAlignment="Left"
                      VerticalAlignment="Top"
                      Margin="20,48,0,0"
                      Width="360"
                      Height="160"
                      x:Name="MainTipBox">
            <local:TipBox.TipText>
                You can change this text by placing a file named 'tips.txt' near the program executable. It's a JSON list.
            </local:TipBox.TipText>
        </local:TipBox>

        <CheckBox Content="Show this Welcome Screen next time you start Windows"
                  HorizontalAlignment="Left"
                  Margin="20,0,0,19"
                  IsChecked="True"
                  IsEnabled="False"
                  VerticalAlignment="Bottom" />
    </Grid>
</Window>

TipBox.xaml

<UserControl x:Class="RadioSim.TipBox"
             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:local="clr-namespace:RadioSim"
             mc:Ignorable="d" 
             d:DesignHeight="152" d:DesignWidth="328"
             Name="Control">
    <Grid Background="#FFFFFF">
        <Border Background="Transparent"
                BorderThickness="1,1,0,0"
                VerticalAlignment="Stretch"
                HorizontalAlignment="Stretch"
                BorderBrush="#828282" />
        
        <Border Background="Transparent"
                BorderThickness="0,0,1,1"
                Margin="0,1,0,0"
                VerticalAlignment="Stretch"
                HorizontalAlignment="Stretch"
                BorderBrush="White" />
        <Grid Background="#20FFFF00" Margin="1">
            <StackPanel>
                <StackPanel Orientation="Horizontal"
                        Margin="28,20,0,0"
                        VerticalAlignment="Top"
                        HorizontalAlignment="Left">
                    <Image Source="Images/TipIcon.png"
                   Width="23"
                   Height="32"
                   SnapsToDevicePixels="True"
                   HorizontalAlignment="Left"
                   VerticalAlignment="Top"
                   RenderOptions.BitmapScalingMode="NearestNeighbor" />

                    <TextBlock FontFamily="Arial"
                           FontWeight="Bold"
                           FontSize="12"
                           Text="Did you know..."
                           Margin="18,6,0,0"
                           TextOptions.TextRenderingMode="Aliased"
                           TextOptions.TextFormattingMode="Display" />
                </StackPanel>
                
                <TextBlock x:Name="TooltipText"
                           Margin="69,0,40,0"
                           FontFamily="Arial"
                           TextWrapping="Wrap"
                           xml:space="preserve"
                           Text="{Binding ElementName=Control, Path=TipText}"
                           TextOptions.TextRenderingMode="Aliased"
                           TextOptions.TextFormattingMode="Display" />
            </StackPanel>
        </Grid>
    </Grid>
</UserControl>

TipBox.xaml.cs

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;

namespace RadioSim
{
    /// <summary>
    /// Interaction logic for TipBox.xaml
    /// </summary>
    public partial class TipBox : UserControl
    {
        public static readonly DependencyProperty TipTextProperty = DependencyProperty.Register("TipText", typeof(string), typeof(TipBox), new PropertyMetadata(string.Empty));

        public string TipText
        {
            get { return (string) GetValue(TipTextProperty); }
            set { SetValue(TipTextProperty, value); }
        }

        public TipBox()
        {
            InitializeComponent();
        }
    }
}

解决步骤
  • 确认项目文件引用:检查TipBox.xaml和TipBox.xaml.cs是否被正确包含在项目中。右键项目→添加→现有项,确保两个文件都已添加;同时在文件属性中确认:TipBox.xaml的Build Action为Page,TipBox.xaml.cs的Build Action为Compile。
  • 清理并重建项目:在Visual Studio中依次执行生成→清理解决方案、生成→重建解决方案,清除编译缓存后重新生成。
  • 验证命名空间一致性:确保所有文件的命名空间完全一致:TipBox.xaml的x:Class属性为RadioSim.TipBox,TipBox.xaml.cs的namespace为RadioSim,MainWindow.xaml的x:Class为RadioSim.MainWindow,无大小写或拼写差异。
  • 检查XAML命名空间引用:确认MainWindow.xaml中的xmlns:local="clr-namespace:RadioSim"无拼写错误,WPF对命名空间的大小写、拼写严格敏感。
  • 重置XAML设计器缓存:重启Visual Studio,或右键XAML文件→查看代码后切换回设计器;若问题仍存在,可通过工具→导入和导出设置→重置所有设置重置VS配置。
  • 确认目标框架版本:确保项目目标框架为.NET 5,无多框架版本混合情况(右键项目→属性→应用→目标框架)。

内容的提问来源于stack exchange,提问作者EMendes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 01:24:52