不能隐式转换父控件名称的类型
本文关键字:类型 控件 转换 不能 | 更新日期: 2023-09-27 18:09:47
我编写了一个代码,用于获取ContexMenu
的父名称,特别是当用户单击ContextMenu
的MenuItem
时发生以下情况:
DataGrid -> ContextMenu (MenuItem 1 was clicked) -> function through code is started -> function return the name of the DataGrid.
private void ClearTable_Click(object sender, RoutedEventArgs e)
{
// Try to cast the sender to a Control
Control ctrl = sender as Control;
if (ctrl != null)
{
// Get the control name
string name = ctrl.Name;
// Get parent control name
Control parent = ctrl.Parent;
string parentName = parent.Name;
}
}
但在ctrl.Parent
我得到这个错误:
不能隐式转换"System.Windows.Controls.Control"中的类型"System.Windows.DependencyObject"。存在显式转换,您是否缺少强制转换?
我做错了什么?
你错过了一个强制转换,事实上它不需要强制转换到Control
,使用基类FrameworkElement
代替:
FrameworkElement parent = (FrameworkElement)ctrl.Parent;
string parentName = parent.Name;