无法将类型 'Windows.UI.Xaml.Controls.Canvas' 的对象转换为类型 'Canvas'

Unable to cast object of type 'Windows.UI.Xaml.Controls.Canvas' to type 'Canvas'

我有一个 canvas,想在 Tapped 时获取它的名字。所以,我有这个 XAML:

<Canvas Name="drawLine" ... >
...
</Canvas>

并且此函数绑定到 Tapped 事件:

private void ChangePage(object sender, TappedRoutedEventArgs e)
{
     string name = ((Canvas)sender).Name.ToString();
     Frame.Navigate(typeof(Params), name);
}

错误得到以下错误:

An exception of type 'System.InvalidCastException' occurred in gotqn.exe but was not handled in user code

Additional information: Unable to cast object of type 'Windows.UI.Xaml.Controls.Canvas' to type 'gotqn.Canvas'.

为什么 ((Canvas)sender).Name.ToString(); 会产生这样的错误?是否有其他方式获取名称?

您似乎在不同的命名空间中有两个 Canvas class。我猜想 Windows.UI.Xaml.Controls 命名空间不在您的 using 中,因此代码假定为 gotqn.Canvas。您是否声明了自己的 Canvas class?如果是,您可能需要指定您想要的 Canvas class

的全名
string name = ((Windows.UI.Xaml.Controls.Canvas)sender).Name.ToString();