2012-05-21 2 views
0

Я пытаюсь применить конвертер для привязки источника изображения. вот моя XAML:тип imageconverter не найден

<Window.Resources> 
     <DataTemplate x:Key="listBoxTemplate"> 
      <StackPanel Orientation="Horizontal"> 
       <StackPanel.Resources> 
        <ImageConverter x:Key="MyImageConverter" /> 
       </StackPanel.Resources> 
       <Image Source="{Binding Path=thumb, StringFormat=/WpfTest;component/Images/{0}, Converter={StaticResource MyImageConverter}}" Height="100" Width="130" Margin="5"></Image> 
       <StackPanel Orientation="Vertical" Width="247"> 
        <TextBlock Text="{Binding recipeName}" Height="60" Padding="15" FontSize="16" HorizontalAlignment="Stretch" VerticalAlignment="Center"></TextBlock> 
        <TextBlock Text="{Binding cuisine}" Height="60" Padding="15" FontSize="16" HorizontalAlignment="Stretch" VerticalAlignment="Center"></TextBlock> 
       </StackPanel> 
      </StackPanel> 
     </DataTemplate> 
    </Window.Resources> 

и вот мой ImageConverter класс:

using System; 
using System.Windows.Data; 
using System.Globalization; 
using System.Windows.Media.Imaging; 

public class ImageConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     string path = (string)value; 

     try 
     { 
      //ABSOLUTE 
      if (path.Length > 0 && path[0] == System.IO.Path.DirectorySeparatorChar 
       || path.Length > 1 && path[1] == System.IO.Path.VolumeSeparatorChar) 
       return new BitmapImage(new Uri(path)); 

      //RELATIVE 
      return new BitmapImage(new Uri(System.IO.Directory.GetCurrentDirectory() + System.IO.Path.DirectorySeparatorChar + path)); 
     } 
     catch (Exception) 
     { 
      return new BitmapImage(); 
     } 

    } 

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

, но когда я попытался запустить приложения, он возвращает «тип ImageConverter не был найден» и VS выделить часть

<ImageConverter x:Key="MyImageConverter" /> 

в xaml выше. Как это исправить? (Кстати, я получил код ImageConverter от Wpf - relative image source path)

ответ

2

Вы должны добавить свое пространство имен, как это:

<ns:ImageConverter x:Key="MyImageConverter"/> 

И убедитесь, что вы добавили пространство имен выше, как это:

<DataTemplate xmlns:ns="...."> 

фактическое пространство имен зависит от вашего проекта, но завершение кода поможет вам.

+0

Извините, действительно wpf и C# noobie здесь .. это то, что я должен сделать, шаг за шагом: 1) изменить до (2) добавить xmlns: ns =" ​​.... "в , который затем станет imin

+0

еще одна вещь, которую вы сказали: «Фактическое пространство имен зависит от вашего проекта, но завершение кода поможет вам». Есть тонны schemas.microsoft.com bla bla, которые показывают завершение кода. Какой из них выбрать? спасибо – imin

+0

тот, который содержит конвертер. вероятно, имя проекта, поскольку я не вижу пространства имен в коде, который вы опубликовали. Вы должны поместить конвертер в пространство имен; глобальное пространство имен является плохим местом для хранения ваших классов. –

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