2013-04-21 6 views
4

Я получаю «Имя xxx не существует в yyy» все время. Я не понимаю, почему, я думаю, я пробовал все возможные комбинации.XAML добавление пространства имен для преобразователей класса

Все моего файла 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... 

Ошибки я есть :

Имя «BoolToImageSourceConverter» не существует в пространстве имен «clr-namesapce: Web_Media_Seeker_WPF.WPFValuesConverters».

Название «BoolToStringConverter» не существует в пространстве имен «clr-namesapce: Web_Media_Seeker_WPF.WPFValuesConverters».

Имя «BootToBoolConverter» не существует в пространстве имен «clr-namesapce: Web_Media_Seeker_WPF.WPFValuesConverters».

Тег 'BoolToImageSourceConverter' не существует в пространстве имен XML 'clr-namesapce: Web_Media_Seeker_WPF.WPFValuesConverters'.

Тип «local: BoolToImageSourceConverter» не найден. Убедитесь, что вы не указали ссылку на сборку и что все ссылочные сборки были созданы.

Тип «local: BoolToStringConverter» не найден. Убедитесь, что вы не указали ссылку на сборку и что все ссылочные сборки были созданы.

Тип «local: BootToBoolConverter» не найден. Убедитесь, что вы не указали ссылку на сборку и что все ссылочные сборки были созданы.

ответ

6

Там есть ошибка в вашем объявлении пространства имен:

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

должен быть

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

Вы кладете namesapce вместо namespace

+0

Я пробовал это.при удалении проекта сборки без проблем. Когда я добавлю их обратно, я снова получаю ошибки – Nerfpl

+0

Можете ли вы запустить приложение? Иногда VS не получает его немедленно. – Kenneth

+0

Нет, я получаю «Были ошибки сборки. Хотели бы вы запустить последнюю успешную сборку» – Nerfpl

0

Я имел эту проблему без опечатки. Проблема не была напрямую связана с XAML, или, по крайней мере, не полностью. Первоначальный разработчик назвал тег Window тем же именем, что и имя класса кода, и это, кажется, теперь запрещено. Это была единственная проблема с XAML. Все остальное связано с перекрытиями в библиотеках WPF и Windows.System.Data, из-за которых IValueConverter (в пространстве имен System.Windows.Data) не распознается. Сначала я искал в обозревателе объектов все библиотеки, у которых был интерфейс IValueConverter. Из них два были в моем проекте, один из них был запоздалым, потому что я думал, что мне понадобится его для замены элементов инструментария WPF 3.5, который я удалил. Я удалил тот, с которым, как я думал, мог обойтись, и это устранило проблему. Это своего рода ошибка «неоднозначной ссылки», но это не так.

Смежные вопросы