Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 将枚举数据绑定到组合框_Wpf - Fatal编程技术网

Wpf 将枚举数据绑定到组合框

Wpf 将枚举数据绑定到组合框,wpf,Wpf,我在试图将枚举绑定到组合框的项目中遇到了一个非常不寻常的错误。为了确保没有出现编码错误,我使用和作为自包含用户控件的示例创建了一个新的usercontrol。我使用.Net4客户端框架作为环境和VS2010。xaml是- <UserControl x:Class="Barcode.Views.UserControl1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/prese

我在试图将枚举绑定到组合框的项目中遇到了一个非常不寻常的错误。为了确保没有出现编码错误,我使用和作为自包含用户控件的示例创建了一个新的usercontrol。我使用.Net4客户端框架作为环境和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>

我在组合框中遇到的错误是:在生成项目后,无法将“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解析错误。但我只是尝试构建一个全新的解决方案,它在那里起作用。我的解决方案中肯定有什么问题,但我不知道是什么问题。