如何使用xaml代码将ComboBox绑定到通用字典

时间:2012-10-20 16:57:31

标签: wpf xaml c#-4.0 data-binding

我正在使用以下代码:

private Dictionary<string, string> GetNumber { get; set; }
public ReportsLetterTra()
{
    GetNumber = new Dictionary<string, string>
                            {
                                {"1", "First"},
                                {"2", "Second"}
                            };

    InitializeComponent();
}

xaml代码:

 <ComboBox 
      DisplayMemberPath="value" 
      SelectedValuePath="key" 
      ItemsSource="{Binding ElementName=reportslettra,Path=GetNumber}"
      SelectedIndex="0" Name="cmbFromNumber" />

为什么不将GetNumber绑定到cmbFromNumber?!

更新:

我在文件后面的完整代码:

using System.Collections.Generic;
using System.Windows;

namespace WpfApplication20
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Dictionary<string, string> GetNumber { get; set; }

        public Window1()
        {

            GetNumber = new Dictionary<string, string>
                                    {
                                        {"1", "First"},
                                        {"2", "Second"}
                                    };
            InitializeComponent();

        }
    }
}

我完整的xaml代码:

<Window x:Class="WpfApplication20.Window1" Name="eportslettra"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid Height="26">
        <ComboBox DisplayMemberPath="Value" SelectedValuePath="Key" 
               ItemsSource="{Binding ElementName=reportslettra,Path=GetNumber}" 
               SelectedIndex="0"  Name="cmbFromNumber"    />
    </Grid>
</Window>

我哪里错了? 为什么不将GetNumber绑定到cmbFromNumber?!

1 个答案:

答案 0 :(得分:1)

您的媒体资源已标记为private,请将其设为public。另外,请更正ComboBoxValueKey上的大写字母。第三,你的绑定表达式看起来无效,仔细检查一下。最后,看起来您的属性是视图后面代码文件的一部分。您可以考虑MVVM设计模式。

<强>更新

您的Window拥有Name'eportslettra',但您的绑定表达式使用ElementName'reportslettra'。纠正其中一个。