我正在尝试将字典绑定到组合框,但是在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" />
显示的内容如下:
答案 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中声明为样式?)。