在课堂上,我为ListBoxItem编写了Double事件。当单击列表框的条目时,它应仅返回该特定条目。但就我而言,尽管我单击了单个条目,但所有条目均被返回,并发生“ InvalidCastException”。因此,我应该如何更改以获取单个条目。

这是双击事件代码:

private void ListBoxItem_DoubleClick(object sender, RoutedEventArgs e)
    {
        //Submit clicked Entry
        Harvest_TimeSheetEntry entryToPost = (Harvest_TimeSheetEntry)sender;

            if (!entryToPost.isSynced)
            {
                //Check if something is selected in selectedProjectItem For that item
             if (entryToPost.ProjectNameBinding == "Select Project")
                    MessageBox.Show("Please Select a Project for the Entry");
                else
                    Globals._globalController.harvestManager.postHarvestEntry(entryToPost);
            }
            else
            {
                //Already synced.. Make a noise or something
                MessageBox.Show("Already Synced;TODO Play a Sound Instead");
            }
    }

In xml:

<ListBox x:Name="listBox1" ItemsSource="{Binding}"  Margin="0,131,0,59" ItemTemplateSelector="{StaticResource templateSelector}" ListBoxItem.MouseDoubleClick="ListBoxItem_DoubleClick"/>

最佳答案

ListBox隐式地将其项目包装到ListBoxItem中。尝试将sender强制转换为ListBoxItem,然后采用其Content属性

关于c# - 发生类型为'System.InvalidCastException'的第一次机会异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17290627/

10-17 02:35