2016-02-02 1 views
2

Я знаю, что это было задано раньше, но я действительно не могу понять, что здесь происходит, основываясь на этих ответах, потому что кажется, что предыдущие искатели разместили свои ivalueconverters под разными классами или файлами. Мой IValueConverter находится в пространстве имен Proc, но по какой-то причине, я получаю ошибки:xaml не видит мой ivalueconverter

Название «LatValueConverter» не существует в пространстве имен «CLR-имен: Учеб».

Название «LongValueConverter» не существует в пространстве имен «clr-namespace: Proc».

Код предназначен для загрузки внешнего файла и размещения изображений в соответствии с значениями lat/lon, указанными в файле. Приложение создается, но изображения не отображаются, что говорит о том, что этот метод не работает. (только показывая соответствующий код ниже)

Кроме того, эти ошибки содержатся в списке ошибок визуальной студии, но как LatValueConverter и LongValueConverter отображаются в выпадающем меню после ввода local: в редакторе xaml. Я пробовал очистить/перестроить, но ошибки все еще появляются. Любые мысли о том, как это исправить?

Visual Studio 2015 Update 1 EDIT: Я написал этот вопрос, заметив его, пока не с помощью Visual Studio 2015 Update 1. Я повторно загружен проект в Visual Studio 2015 (нет обновлений) и без ошибок! Это, кажется, ошибка с обновлением Visual Studio 2015 1. Кто-нибудь знает о работе?

Вот XAML:

<Window x:Class="Proc.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:sys="clr-namespace:System;assembly=mscorlib" 
    xmlns:local="clr-namespace:Proc" 
    mc:Ignorable="d"> 
<Window.Resources> 
    <ResourceDictionary> 
     <local:LatValueConverter x:Key="latValueConverter" /> <!-- Errors are here --> 
     <local:LongValueConverter x:Key="longValueConverter" /> <!-- Errors are here --> 
     <sys:Double x:Key="mapWidth">950</sys:Double> 
     <sys:Double x:Key="mapHeight">530</sys:Double> 
    </ResourceDictionary> 
</Window.Resources> 

Вот MainWindow.xaml.cs:

namespace Proc 
{ 
    public partial class MainWindow : Window, INotifyPropertyChanged 
    { 
     //... 
    } 
    public class LatValueConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      double latitude = (double)value; 
      double height = (double)parameter; 

      int top = (int)((Constants.LatTop - latitude)/(Constants.LatTop - Constants.LatBottom) * height); 
      return top; 
     } 

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

    public class LongValueConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      double longitude = (double)value; 
      double width = (double)parameter; 

      int left = (int)((Constants.LongLeft - longitude)/(Constants.LongLeft - Constants.LongRight) * width); 
      return left; 
     } 

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

ответ

0

У меня была такая же проблема на VS 2015 Update 1.

код строит и работает нормально, но дизайнер жалуется, что «некоторые элементы гаванью» t был построен ... », и если я наведите указатель мыши на« оскорбительную »часть XAML, всплывающая подсказка покажет, что« MyCustomConverter не существует в пространстве имен и т. д. »

По какой-то причине в моем case, я получаю это поведение дизайнера только в том случае, если я создаю решение как ЛЮБОЙ ЦП. Если я заставляю его x64, то дизайнер работает.

Я еще не пробовал VS 2015 update 2.

2

Удалите ResourceDictionary объект; поэтому он должен в конечном итоге выглядит так:

<Window.Resources> 
    <local:LatValueConverter x:Key="latValueConverter" /> <!-- Errors are here --> 
    <local:LongValueConverter x:Key="longValueConverter" /> <!-- Errors are here --> 
    <sys:Double x:Key="mapWidth">950</sys:Double> 
    <sys:Double x:Key="mapHeight">530</sys:Double> 
</Window.Resources> 
+0

Спасибо, но это не исправить. Может быть, проблема с моей визуальной студией? – Alex

+0

Возможно. Убедитесь, что у вас установлена ​​самая последняя версия. Также сделайте чистую и восстановите. Вызывается ли метод конвертации? – Kcvin

+0

Я поставил точки останова на возврат для обоих конвертеров, они никогда не запускались. Также я очистил/перестроил. Так что кажется, что конверт не называется. – Alex

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