Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中使用ListBox时,如何以编程方式访问选定的值_C#_Wpf_Listbox - Fatal编程技术网

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>;
}