2011-01-21 4 views
1

Я получаю очень необычную ошибку в проекте, который используется для работы там, где я пытаюсь связать ENUM с полем со списком. Чтобы я не делал ошибок кодирования, я создал новый пользовательский контроль, используя SO Question 58743 и ageektrapped в качестве образцов для автономного пользовательского элемента управления. Я использую .Net4 Client Framework как среду и VS2010. XAML является -Перечисление данных для ComboBox

<UserControl x:Class="Barcode.Views.UserControl1" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:System="clr-namespace:System;assembly=mscorlib" 
      mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> 

    <UserControl.Resources> 
     <ObjectDataProvider MethodName="GetValues" 
          ObjectType="{x:Type System:Enum}" 
          x:Key="AlignmentValues"> 
      <ObjectDataProvider.MethodParameters> 
       <x:Type TypeName="HorizontalAlignment" /> 
      </ObjectDataProvider.MethodParameters> 
     </ObjectDataProvider> 
    </UserControl.Resources> 
    <Grid> 
     <ComboBox Name="myComboBox" SelectedIndex="0" Margin="8" 
        ItemsSource="{Binding Source={StaticResource AlignmentValues}}" /> 
    </Grid> 
</UserControl> 

ошибка, которую я получаю на ComboBox является Ошибка 144 Не удается привести объект типа «System.String» к типу «System.Windows.DataTemplate» после построения проекта ,

Я не понимаю, что может вызвать эту ошибку.

+0

перемещен комментарий ниже –

ответ

1

Похоже, вы потеряли пространство имен на своем HorizontalAlignment. Добавьте соответствующее пространство имен, в котором находится тип HorizontalAlignment.

xmlns:local="clr-namespace:Barcode.Views" 

Затем измените код XAML, чтобы использовать вновь определенное пространство имен ...

... 

<x:Type TypeName="local:HorizontalAlignment"/> 

... 

EDIT:

При этом, как тип HorizontalAlignment перечисления внутри структуры, то ваши код должен работать как есть. Я проверял это, чтобы быть уверенным, и это действительно работает; поскольку я разместил экземпляр UserControl на моем Окне, и он работал без сучка и задоринки. Настройте пустой проект и начинайте с нуля, чтобы узнать, существует ли проблема, поскольку у вас могут быть другие факторы, вызывающие проблему.

+0

На самом деле для этой демонстрации я пытался получить перечисления горизонтального выравнивания (влево, вправо, в центре), как известно, перечисление, которое работает. Вот как написано много демо. –

+0

@photo_tom Добавлен комментарий к дополнению, просто скопирован/вставлен ваш код, и он действительно работает –

+0

@Aaron - Это то, что я видел. Однако в этом проекте и другом новом проекте я не могу заставить код работать без ошибки. –

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