将字典绑定到组合框

时间:2013-05-02 08:34:02

标签: c# xaml windows-8 windows-runtime winrt-xaml

我正在尝试将字典绑定到组合框,但是在UI上没有项目显示只有空白项目是Binded。请找到下面的代码,让我知道我做错了什么?

代码:

private Dictionary<string, string> _timeToExpirationValues = 
new Dictionary<string, string>     { "< 15 Days", "15" },
                                   { "< 30 Days", "30" },
                                   { "< 60 Days", "60" },
                                   { "< 90 Days", "90" },
                                   { "< 1 year", "365" }};


        /// <summary>
        /// Gets or sets the filter settings data.
        /// </summary>
        /// <value>
        /// The filter settings data.
        /// </value>
        public Dictionary<string, string> TimeToExpirationValues
        {
            get { return _timeToExpirationValues; }
            set { SetProperty(ref _timeToExpirationValues, value); }
        }

XAML代码:

 <ComboBox Grid.Row="1" Grid.Column="1" 
                                  ItemsSource="{Binding TimeToExpirationValues}"
                                  DisplayMemberPath="Key"
                                  SelectedValuePath="Value" />

显示的内容如下:

enter image description here

4 个答案:

答案 0 :(得分:1)

您是否已将DataContext设置为窗口或ComboBox?如果不是,你应该将这些行添加到你的窗口

<Window.DataContext>
        <local:YourClassName/>
    </Window.DataContext>

答案 1 :(得分:1)

这似乎是已知的错误。这里有一些链接给你。我尝试this Silverlight sample用于Windows应用商店应用,我也只获得白色项目,没有文字。

Binding a Dictionary to a WinRT ListBox

TargetException error in Binding - MSDN Forum

TargetException error in Binding to Dictionary<string, object> - Submitted Bug

答案 2 :(得分:0)

试试这个(注意额外的单词Path):

<ComboBox Grid.Row="1" Grid.Column="1" 
                              ItemsSource="{Binding Path=TimeToExpirationValues}"
                              DisplayMemberPath="Key"
                              SelectedValuePath="Value" />

答案 3 :(得分:0)

我试过你的例子,它在这里工作。

所以我认为,对于combox中的标签,你只有一个白色的前景。 (也许在app.xaml中声明为样式?)。