尝试打开屏幕时异常触发

时间:2012-12-06 22:10:55

标签: c# visual-studio-lightswitch

当我尝试打开屏幕时,我遇到以下异常:

  

无法将'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;
            }
        }
    }

由于

2 个答案:

答案 0 :(得分:1)

我的猜测是JournalVoucher属于Grid类型。并且您正在尝试将其强制转换为TabItem类型。

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

如果它只被调用一次,那么它可能足以改变行

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

为:

((System.Windows.Controls.Grid)e.Control).KeyUp += JournalVoucher_KeyUp;

JournalVoucher_KeyUp中的发件人很可能也是Grid

类型

答案 1 :(得分:0)

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

var tabitem = (System.Windows.Controls.TabItem)sender;

其中一个无疑是根本原因!

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