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

标签 c# wpf canvas windows-runtime windows-phone-8.1

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

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

并且此函数绑定(bind)到 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 类。我猜 Windows.UI.Xaml.Controls 命名空间不在您的 using 中,因此代码假定为 gotqn.Canvas。您是否声明了自己的 Canvas 类?如果是,您可能必须指定您想要的 Canvas 类的全名

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

关于c# - 无法将类型为 'Windows.UI.Xaml.Controls.Canvas' 的对象转换为类型 'Canvas',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30558825/

相关文章:

c# - Visual Studio 2015 在使用 VISA 库进行通信时出现问题

c# - 绑定(bind)到 bool 属性时设置 TextBlock 的默认值

c# - 带有 TextBox 子项的 TreeView SelectedItem 行为

javascript - Canvas 收缩替代品

HTML5 Canvas 线图,用户在其中输入数据

c# - LINQ 身份函数

c# - 绑定(bind) Telerik RadTreeView 客户端

c# - 如何连接 2 个列表

c# - WPF 数据网格组样式

java - AWT 绘制浮点矩形