WPF/C#: 如何在列表框中一键选择?

WPF/C#: How to make a selection from a listbox with one click?

我有两个包含类别和子类别的列表框。我希望在单击某个类别时弹出子类别。

即使我的代码适用于鼠标双击事件,但我无法单击一下。我试过鼠标按下,鼠标向上预览鼠标按下等。它们都给出了空引用错误

    private void DataCategoryListBox_PMouseLDown(object sender, MouseButtonEventArgs e)
    {

        string selectedCat = DataCategoryListBox.SelectedItem.ToString();
        MessageBox.Show(selectedCat);

        if (selectedCat == "Geological")
        {
            string[] GeoCats = { "soil", "hydrogeology" };
            SubCatListBox.ItemsSource = GeoCats;
        }          
    }

有解决办法吗?

您想知道某个类别何时被选中,因此您应该使用 SelectionChanged 事件。当您使用 MouseDown 时,可能还没有选择任何东西,这就是您得到空异常的原因:

private void DataCategoryListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    string selectedCat = DataCategoryListBox.SelectedItem.ToString();
    MessageBox.Show(selectedCat);

    if (selectedCat == "Geological")
    {
        string[] GeoCats = { "soil", "hydrogeology" };
        SubCatListBox.ItemsSource = GeoCats;
    }          
}