我正在尝试将ENUM绑定到组合框的项目中出现非常不寻常的错误。为了确保我没有编码错误,我使用SO Question 58743和ageektrapped作为自包含用户控件的示例创建了一个新的用户控件。我使用.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>
我在ComboBox上遇到的错误是错误144在构建项目后,无法将类型为“System.String”的对象强制转换为“System.Windows.DataTemplate”。
我不知道可能导致此错误的原因。
答案 0 :(得分:1)
您可能会错过HorizontalAlignment
上的命名空间。添加HorizontalAlignment
类型所在的相关命名空间。
xmlns:local="clr-namespace:Barcode.Views"
然后修改您的XAML以使用新定义的命名空间...
...
<x:Type TypeName="local:HorizontalAlignment"/>
...
修改强>
这是框架内的HorizontalAlignment
枚举类型,那么您的代码应该按原样运行。我测试它确定它确实有效;当我在我的窗口放置UserControl
的一个实例时,它顺利运行。设置一个空项目并从头开始查看问题是否仍然存在,因为您可能有其他因素导致问题。