【问题标题】:XAML adding namespace for converters classXAML 为转换器类添加命名空间
【发布时间】:2013-04-14 08:57:31
【问题描述】:

我一直收到“yyy 中不存在名称 xxx”。 我不明白为什么,我想我尝试了所有可能的组合。

我所有的cs文件,包括主窗口都在“Web_Media_Seeker_WPF”命名空间中

Converters.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;

namespace Web_Media_Seeker_WPF.WPFConverters
{
    public class BoolToValueConverter<T> : IValueConverter
    {
        public T FalseValue { get; set; }
        public T TrueValue { get; set; }

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
                return FalseValue;
            else
                return (bool)value ? TrueValue : FalseValue;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return value != null ? value.Equals(TrueValue) : false;
        }
    }

    public class BoolToObjectConverter : BoolToValueConverter<Object> { }
    public class BoolToStringConverter : BoolToValueConverter<String> { }
    public class BoolToBrushConverter : BoolToValueConverter<System.Windows.Media.Brush> { }
    public class BoolToVisibilityConverter : BoolToValueConverter<System.Windows.Visibility> { }
    public class BoolToColorConverter : BoolToValueConverter<System.Windows.Media.Color> { }
    public class BoolToImageSourceConverter : BoolToValueConverter<System.Windows.Media.ImageSource> { }
    public class BootToBoolConverter : BoolToValueConverter<bool> { }

        public class AddValueConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            object result = value;
            int Value;

            if (value != null && targetType == typeof(Int32) &&
                int.TryParse((string)parameter,
                System.Globalization.NumberStyles.Integer, culture, out Value))
            {
                result = (int)value + (int)Value;
            }

            return result;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}

MainWindow.xaml

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namesapce:Web_Media_Seeker_WPF.WPFConverters"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        x:Class="Web_Media_Seeker_WPF.MainWindow"
        Title="Web Media Seeker"
        Height="563"
        Width="836">
  <Window.Resources>
    <local:BoolToImageSourceConverter x:Key="BoolToWorkImageSource"
                                      TrueValue="Images/work.png"
                                      FalseValue="Images/idle.png" />
    <local:BootToBoolConverter x:Key="InvertBool"
                               TrueValue="False"
                               FalseValue="True" />
    <local:BoolToStringConverter x:Key="WorkTooltip"
                                 TrueValue="Working..."
                                 FalseValue="Idle" />
  </Window.Resources>
and stuff...

我遇到的错误:

命名空间“clr-namesapce:Web_Media_Seeker_WPF.WPFValuesConverters”中不存在名称“BoolToImageSourceConverter”。

命名空间“clr-namesapce:Web_Media_Seeker_WPF.WPFValuesConverters”中不存在名称“BoolToStringConverter”。

名称空间“clr-namesapce:Web_Media_Seeker_WPF.WPFValuesConverters”中不存在名称“BootToBoolConverter”。

XML 命名空间“clr-namesapce:Web_Media_Seeker_WPF.WPFValuesConverters”中不存在标记“BoolToImageSourceConverter”。

找不到类型“local:BoolToImageSourceConverter”。确认您没有丢失程序集引用,并且所有引用的程序集都已构建。

找不到类型“local:BoolToStringConverter”。确认您没有丢失程序集引用,并且所有引用的程序集都已构建。

找不到类型“local:BootToBoolConverter”。确认您没有丢失程序集引用,并且所有引用的程序集都已构建。

【问题讨论】:

    标签: c# class xaml namespaces


    【解决方案1】:

    您的命名空间声明中有错误:

    xmlns:local="clr-namesapce:Web_Media_Seeker_WPF.WPFConverters"
    

    应该是

    xmlns:local="clr-namespace:Web_Media_Seeker_WPF.WPFConverters"
    

    你输入namesapce而不是namespace

    【讨论】:

    • 我试过这个。当删除项目构建没有问题。当我将它们添加回来时,我再次收到错误
    • 您可以运行该应用程序吗?有时 VS 不会立即得到它。
    • 不,我得到“有构建错误。你想运行最后一个成功的构建”
    • 它们是否位于同一个程序集中?
    • 知道了!您在 XAML 中的命名空间声明中有错字
    【解决方案2】:

    我遇到了这个问题,没有错字。 问题不直接与 XAML 相关,或者至少不完全是。最初的开发者将 Window 标记命名为与代码隐藏类名称相同的名称,现在这似乎被禁止了。这是 XAML 的唯一问题。其他一切都与 WPF 和 Windows.System.Data 库中的重叠有关,导致 IValueConverter(在 System.Windows.Data 命名空间中)无法识别。 我首先在对象浏览器中搜索了所有具有 IValueConverter 接口的库。其中,两个在我的项目中,一个是事后才想到的,因为我认为我需要它来替换我删除的 WPF 工具包 3.5 的元素。我删除了我认为可以不用的那个,这消除了问题。这是一种“不明确的引用”错误,但不是那样出现的。

    【讨论】:

      猜你喜欢
      • 2015-10-29
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多