当我尝试打开屏幕时,我遇到以下异常:
无法将'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;
}
}
}
由于
答案 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;
其中一个无疑是根本原因!
您的代码主要是事件处理程序 - 我的猜测是这些是在网格上定义的。