2013-11-26 101 views
0

仍然在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。页面和mainwindow都声明了WGM名称空间 - 因为这篇文章已经足够长了,所以我将它们剪掉了。

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

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

回答

1

更新如下结合:

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

不知道我怎么设法错过!谢谢。 – Lindsay