C# 尝试打开屏幕时引发异常

C# 尝试打开屏幕时引发异常,c#,visual-studio-lightswitch,C#,Visual Studio Lightswitch,当我试图打开屏幕时,出现以下异常: 无法将“System.Windows.Controls.Grid”类型的对象强制转换为“System.Windows.Controls.TabItem”类型 任何帮助都将不胜感激 partial void VouchersDetail_Created() { this.FindControl("JournalVoucher").ControlAvailable += JournalVoucher_ControlAvailable;

当我试图打开屏幕时,出现以下异常:

无法将“System.Windows.Controls.Grid”类型的对象强制转换为“System.Windows.Controls.TabItem”类型

任何帮助都将不胜感激

partial void VouchersDetail_Created()
    {
        this.FindControl("JournalVoucher").ControlAvailable += JournalVoucher_ControlAvailable;
    }

    void JournalVoucher_ControlAvailable(object sender, ControlAvailableEventArgs e)
    {
        ((System.Windows.Controls.TabItem)e.Control).KeyUp += JournalVoucher_KeyUp;
    }

    void JournalVoucher_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.V)
        {
            if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
            {
                var tabitem = (System.Windows.Controls.TabItem)sender;
                tabitem.IsEnabled = true;
            }
        }
    }

谢谢

在您的代码中有许多行,您试图将对象强制转换为TabItem:

var tabitem = (System.Windows.Controls.TabItem)sender;
其中之一无疑将是根本原因


您的代码主要是事件处理程序-我猜这些是在网格上定义的。

我猜JournalVoucher属于网格类型。您正试图将其强制转换为TabItem类型

在该行上放置一个断点,并检查事件是否被多次调用

如果只调用一次,则可能足以更改线路

((System.Windows.Controls.TabItem)e.Control).KeyUp += JournalVoucher_KeyUp;
致:


JournalVoucher_KeyUp中的发送方很可能也是Grid类型

哪一行引发异常?请看堆栈跟踪。谢谢您的回复。我在下面一行得到了一个例外<代码>((System.Windows.Controls.TabItem)e.Control).KeyUp+=JournalVoucher\u KeyUp这有什么解决办法吗?嗨,科林,谢谢你的回复。我在下面一行得到了一个例外<代码>((System.Windows.Controls.TabItem)e.Control).KeyUp+=JournalVoucher\u KeyUp是否有任何解决方法?
((System.Windows.Controls.Grid)e.Control).KeyUp += JournalVoucher_KeyUp;