使用wpf将列表框中的字典键和值绑定

我试图将字典的键绑定到列表框中的一行网格,并将字典的值绑定到网格的另一行。 key的类型是Book,类是thati写的,值的类型是int。 我想在网格中写出类的元素和整数值。 你能帮帮我吗? 我对确定itemsSource和要绑定的数据类型感到很困惑。 谢谢你的帮助

编辑:我忘了说我正在使用c# – wpf。 =)


我将字典作为itemsSource发送,并且我将字典指定为objectdataprovider标记中的类型,并尝试通过以下代码发送值(int):

 

并且选择的项目显示为[myNameSpace.Book,4]而不是4。


 BookListBox.ItemsSource = LibManager.Books; 

这是我在Window.xaml.cs中写的,Books是BookList,其中BookList是一种字典。

和xaml文件:

                 

我的代码还有一个问题 – 我无法在列表框中看到列出的项目。 我的意思是我可以通过ListBox.SelectedItem获取值但在列表框中看不到。 因此,我无法确定是否可以将整数值传递到我想要的位置。

所以我想我首先需要帮助解决这个问题…我写了一个手工编写的标签,另一个标签应该由同一行中的数据绑定填充,但我可以看到第一个标签,但我可以达到后面的代码值。

下面的代码将显示以下内容:

 1 Book 1 ------- 2 Book 2 ------- 3 Book 3 

SelectedBookIndex将被设置为所选书籍的索引,在开始时将选择第二本书。

XAML:

                 

代码背后:

 using System; using System.Collections.Generic; using System.Diagnostics; using System.Windows; namespace TestDemo { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Books = new Dictionary(); Books.Add(new Book() { Name = "Book 1"}, 1); Books.Add(new Book() { Name = "Book 2" }, 2); Books.Add(new Book() { Name = "Book 3" }, 3); SelectedBookIndex = 2; DataContext = this; } public Dictionary Books { get; set; } private int _selectedBookIndex; public int SelectedBookIndex { get { return _selectedBookIndex; } set { _selectedBookIndex = value; Debug.WriteLine("Selected Book Index=" + _selectedBookIndex); } } } public class Book { public string Name { get; set; } } } 

从Grid元素中删除DataContext="{StaticResource BookData}"

ObjectDataProvider将创建一个新的空BookList,并且TextBlockinheritance该DataContext。 如果删除该属性,TextBlock将从ItemsControl中的当前项获取其DataContext,该项将是该行的KeyValuePair。 您可以完全删除ObjectDataProvider元素,因为您在代码中创建数据。