将组合框项目绑定到枚举字典

时间:2013-11-26 06:42:01

标签: wpf xaml data-binding combobox enums

在WPF和绑定方面仍然很新,但我有一个枚举,我将在项目的其他地方使用对象的属性,但程序的第一个启动点之一将是用户选择单个项目从一个组合框,我想匹配可用的枚举选项。我原本以为有一个字典对象,其中enum选项作为键,值为字符串,用于UI演示,这就是我一直在努力的方向。我一直在寻找并认为我有它,但组合框填充空白。

我有几个问题;

首先,由于我还不太确定与绑定有什么关系,这个问题是否与我在另一个问题的评论中找到的这篇文章Target Exception Bug有关?如果是这样,这是否意味着我暂时咆哮着错误的树?还有另一种方法让我实现目标吗?

其次,如果它不相关,我是否遗漏了以下代码中的内容?我目前在输出窗口中没有出错,项目编译得很好。

这是枚举(它存在于已添加到项目引用中的单独命名空间中);

namespace WGM_lbr
{
public class Available_Wgms
{
    private static Dictionary<Wgms,string> _wgmColl;
    public static Dictionary<Wgms,string> WgmsCollection 
    {
        get 
        {
            return _wgmColl;
        }
    }

    static Available_Wgms()
    {
        _wgmColl = new Dictionary<Wgms, string>() {
            {Wgms.First, "First Dictionary item"},
        //other Dictionary Items go here
        }
    }

    public enum Wgms
    {
        First,
        //other Enum options go here
    }
}
}

app.xaml中的我的资源声明

<Application x:Class="The_First.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:WGM="clr-namespace:WGM_lbr;assembly=WGM_lbr"
         StartupUri="MainWindow.xaml">
<Application.Resources>
    <BooleanToVisibilityConverter x:Key="b2v"/>
    <WGM:Available_Wgms x:Key="WgmList"/>
</Application.Resources>

最后是组合框和绑定xaml(如果它相关,它存在于wpf控件的嵌套中,直到生成在页面上的网格,通过使用页面的帧控件加载到mainwindow.xaml页面和主窗口都声明了WGM命名空间 - 我把它们剪掉了,因为这个帖子已经足够长了);

<ComboBox Name="cmbWgmSelector" Margin="5,0" ItemsSource="{Binding Source={StaticResource WgmList}}"/>

非常感谢任何可以提供的帮助/建议。

1 个答案:

答案 0 :(得分:1)

更新绑定,如下所示:

<ComboBox Name="cmbWgmSelector" Margin="5,0" DisplayMemberPath="Value" ItemsSource="{Binding Path=WgmsCollection, Source={StaticResource WgmList}}"/>