Wpf 将枚举数据绑定到组合框
我在试图将枚举绑定到组合框的项目中遇到了一个非常不寻常的错误。为了确保没有出现编码错误,我使用和作为自包含用户控件的示例创建了一个新的usercontrol。我使用.Net4客户端框架作为环境和VS2010。xaml是-Wpf 将枚举数据绑定到组合框,wpf,Wpf,我在试图将枚举绑定到组合框的项目中遇到了一个非常不寻常的错误。为了确保没有出现编码错误,我使用和作为自包含用户控件的示例创建了一个新的usercontrol。我使用.Net4客户端框架作为环境和VS2010。xaml是- <UserControl x:Class="Barcode.Views.UserControl1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/prese
<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>
我在组合框中遇到的错误是:在生成项目后,无法将“System.String”类型的对象强制转换为“System.Windows.DataTemplate”
我不知道是什么原因导致了此错误。看起来您可能缺少
水平对齐上的命名空间。在HorizontalAlignment
类型所在的位置添加相关命名空间
xmlns:local="clr-namespace:Barcode.Views"
然后修改XAML以使用新定义的命名空间
...
<x:Type TypeName="local:HorizontalAlignment"/>
...
。。。
...
编辑:
由于这是框架中的HorizontalAlignment
enum类型,那么您的代码应该按原样工作。我测试它是肯定的,它确实有效;当我将UserControl
的一个实例放在我的窗口上时,它工作得很顺利。设置一个空项目,然后从头开始查看问题是否仍然存在,因为可能有其他因素导致该问题。看起来您可能缺少HorizontalAlignment上的命名空间。在HorizontalAlignment
类型所在的位置添加相关命名空间
xmlns:local="clr-namespace:Barcode.Views"
然后修改XAML以使用新定义的命名空间
...
<x:Type TypeName="local:HorizontalAlignment"/>
...
。。。
...
编辑:
由于这是框架中的HorizontalAlignment
enum类型,那么您的代码应该按原样工作。我测试它是肯定的,它确实有效;当我将UserControl
的一个实例放在我的窗口上时,它工作得很顺利。设置一个空项目,从头开始,看看问题是否仍然存在,因为您可能有其他因素导致问题。实际上,在本演示中,我尝试将水平对齐枚举(左、右、中)作为已知的有效枚举。这就是已经编写的演示的数量。@photo_tom添加了附加注释,只是复制/粘贴了您的代码,确实如此work@Aaron-这就是我所看到的。但是,在这个项目和另一个新项目中,我无法在没有错误的情况下运行代码。@photo_tom所以你在IDE中添加了新的UserControl并选择了WPF UserControl(不是WinForms),然后复制/粘贴了上面的代码并更改了UserControl的x:Class,它将不会编译?@Aaron-编译后,组合框正在报告处于错误状态。如果我去运行它,我将是一个XAML解析错误。但我只是尝试构建一个全新的解决方案,它在那里起作用。我的解决方案中一定有损坏的地方,但我不知道是什么。实际上,在这个演示中,我试图将水平对齐枚举(左、右、中)作为已知的有效枚举。这就是已经编写的演示的数量。@photo_tom添加了附加注释,只是复制/粘贴了您的代码,确实如此work@Aaron-这就是我所看到的。但是,在这个项目和另一个新项目中,我无法在没有错误的情况下运行代码。@photo_tom所以你在IDE中添加了新的UserControl并选择了WPF UserControl(不是WinForms),然后复制/粘贴了上面的代码并更改了UserControl的x:Class,它将不会编译?@Aaron-编译后,组合框正在报告处于错误状态。如果我去运行它,我将是一个XAML解析错误。但我只是尝试构建一个全新的解决方案,它在那里起作用。我的解决方案中肯定有什么问题,但我不知道是什么问题。