0

在我的代码中,我使用列表框来显示我正在创建的类中的对象。我想要的是能够单击列表框中的项目并以编程方式使用所选项目。这些项目来自字典,如下所示。

private Dictionary<Int32, MyClass> collection;

public Window1()
{
    ListBox1.SelectionChanged += new SelectionChangedEventHandler(ClickAnItem);
    ListBox1.ItemSource = collection;
}

现在,这一切正常,ListBox 像我期望的那样显示我的集合,并且我有事件应该触发,但我被困在如何实际使用选定的值上。

private void ClickAnItem(object sender, RoutedEventArgs e)
{
    ListBox list = sender as ListBox;
    /** list has the Int32 and the MyClass object but I can't seem to 
     *  get them out of there programmatically
     */
}

我尝试将 ListBox.SelectedItems 转换为 Dictionary 类型的对象,但无济于事。

我没有运行它,但这里有一个看起来相似的问题。但是,如果可能的话,我想远离编辑 XAML。我在运行时能做的越多越好。

所以我的问题是,如何访问所选项目的“Int32”和“MyClass”?我过去使用过 C#,但我现在才重新开始使用它,这已经困扰了我一个多小时。

4

1 回答 1

2

您需要从SelectedItemListBox 上的属性中获取值并将其转换为适当的类型。在你的情况下,这将是一个KeyValuePair<Int32, MyClass>,因为这就是你的Dictionary

试试这个:

private void ClickAnItem(object sender, RoutedEventArgs e)
{
   ListBox list = sender as ListBox;

   var selectedItem = listBox.SelectedItem as KeyValuePair<Int32, MyClass>;
}
于 2013-05-02T21:35:48.273 回答