2009-02-20 3 views
0

У меня есть этот код XAML:WPF: DataTemplate Для класса

<UserControl x:Class="M_Cubed.Controls.TagEditor" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:classes="clr-namespace:M_Cubed.Classes"> 
    <UserControl.Resources> 
     <DataTemplate DataType="{x:Type classes:TagEditorPic}"> 
      <ComboBox DataContext="{StaticResource PicTypes}" 
       ItemsSource="{Binding}"/> 
     </DataTemplate> 
    </UserControl.Resources> 
</UserControl> 

У меня есть этот C#:

namespace M_Cubed.Classes 
{ 
    public class TagEditorPic : INotifyPropertyChanged 
    { 
      public TagEditorPic() { } 
    } 
} 

И я получаю эту ошибку:

Тип ссылки не может найти общего типа с именем ' TagEditorPic.

Любые предложения?

ответ

0

Я решил установить атрибут x: Key на datatemplate и просто привязать свойства шаблона к StaticResource x: Key. Он отлично работает со мной.

1

Это потому, что вы не реализовали INotifyPropertyChanged. Если вы это реализуете, ваш контроль будет скомпилирован.

Он не находит элемент управления, потому что он не может скомпилировать класс TagEditorPic. Так как это не жизнеспособный класс, парсер XAML не знает, что делать.

+0

Извините, я не опубликовал весь свой код. Я реализую INotifyPropertyChanged. Код компилируется и работает очень хорошо. Эта ошибка присутствует только в представлении дизайнера. – Nick

0

В зависимости от вашей версии Visual Studio вы можете получать устаревшие сборки.

Попробуйте запустить Build -> Clean Solution, а затем переустановите решение.

Если это не работает, попробуйте перезапустить Visual Studio.

+0

Ни один из них не работал. – Nick

0

- TagEditorPic класс в той же сборке? Else вам нужно указать:

xmlns:classes="clr-namespace:M_Cubed.Classes;assembly=myassembly" 
+0

Это точно такая же сборка – Nick

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