2011-01-21 146 views
1

我收到了一个非常不寻常的错误,该项目用于在我尝试将ENUM绑定到组合框的工程中。为了确保我没有犯过编码错误,我使用SO Question 58743ageektrapped作为自包含用户控件的样本进行了新的用户控制。我使用.Net4 Client Framework作为环境和VS2010。该XAML是 -数据绑定枚举组合框

<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> 

是我得到的组合框的错误是错误144无法构建项目后投类型“System.String”的对象键入“System.Windows.DataTemplate”

我不知道什么可能导致此错误。

+0

移动了以下评论 – 2011-01-21 17:12:47

回答

1

看起来您可能会错过HorizontalAlignment上的命名空间。添加HorizontalAlignment类型所在的相关名称空间。

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

然后修改您的XAML来使用新定义的命名空间的...

... 

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

... 

编辑:

有了这个作为HorizontalAlignment枚举类型从框架内,那么你的代码应该按原样工作。我测试了它是确定的,它确实有效;因为我在我的窗口上放置了一个UserControl的实例,并且工作顺利。设置一个空的项目,并从头开始,看看问题是否仍然存在,因为您可能有其他因素导致问题。

+0

其实对于这个演示,我试图让水平对齐枚举(左,右,中)作为一个知道的枚举。这是多少个演示文稿的写入。 – 2011-01-21 17:17:43