C# 在WPF中使用ListBox时,如何以编程方式访问选定的值
在我的代码中,我使用一个列表框来显示我正在创建的类中的对象。我想要的是能够单击列表框中的项目,并以编程方式使用所选项目。这些项目来自如下所示的词典C# 在WPF中使用ListBox时,如何以编程方式访问选定的值,c#,wpf,listbox,C#,Wpf,Listbox,在我的代码中,我使用一个列表框来显示我正在创建的类中的对象。我想要的是能够单击列表框中的项目,并以编程方式使用所选项目。这些项目来自如下所示的词典 private Dictionary<Int32, MyClass> collection; public Window1() { ListBox1.SelectionChanged += new SelectionChangedEventHandler(ClickAnItem); ListBox1.ItemSource
private Dictionary<Int32, MyClass> collection;
public Window1()
{
ListBox1.SelectionChanged += new SelectionChangedEventHandler(ClickAnItem);
ListBox1.ItemSource = collection;
}
我尝试将ListBox.SelectedItems强制转换为Dictionary类型的对象,但没有成功
我没有运行它,但似乎类似。但是,如果可能的话,我不想编辑XAML。在运行时我能做的越多越好
所以我的问题是,如何访问所选项目的“Int32”和“MyClass”?我过去使用过C#,但现在我又开始使用它,这已经困扰了我一个多小时。您需要从列表框上的
SelectedItem
属性获取值,并将其转换为适当的类型。在您的情况下,这将是一个KeyValuePair
,因为这是您的字典的组成部分
尝试一下:
private void ClickAnItem(object sender, RoutedEventArgs e)
{
ListBox list = sender as ListBox;
var selectedItem = listBox.SelectedItem as KeyValuePair<Int32, MyClass>;
}
private void ClickAnItem(对象发送者,路由目标)
{
ListBox list=发送方作为ListBox;
var selectedItem=listBox.selectedItem作为键值对;
}
什么是ClickAnItem??你怎么用的?你跑得更快。我也正要发这个=)谢谢你这正是我需要的。我曾考虑过可能制作一个元组,但我不知道KeyValuePairs。
private void ClickAnItem(object sender, RoutedEventArgs e)
{
ListBox list = sender as ListBox;
var selectedItem = listBox.SelectedItem as KeyValuePair<Int32, MyClass>;
}