什么导致了“命名空间中不存在 'UI' 类型或命名空间”的错误?

3

我正在开发一个UWP应用程序,尝试处理GridView中SelectedItem的值。与WPF一样,我进入XAML并在其中键入事件名称,让VS为我创建代码事件。

<GridView x:Name="DataGrid1"
        ItemClick="dg_ItemClick">
        <!-- Just -->
        <!-- Some -->
        <!-- Normal -->
        <!-- XAML -->
</GridView>

而 Visual Studio 创建的事件看起来像这样

    private void dg_ItemClick(object sender, Windows.UI.Xaml.Controls.ItemClickEventArgs e)
    {
            Biz.Customer cust = e.ClickedItem as Biz.Customer;
            var messageDialog2 = new MessageDialog(cust.Code, cust.Company);
            messageDialog2.ShowAsync();
    }

在Windows.UI.Xaml.Controls的UI部分,我立即发现了一个红色的波浪线。页面顶部有一个using用于包含它,但VS不允许添加任何其他UWP引用。

我可以通过将ItemClickEventArgs更改为RoutedEventArgs来消除错误,就像在应用程序的其他部分中所做的那样,但在这种情况下,我确实需要ClickedItem作为参数传递给代码后台。

我刚刚与另一个开始使用UWP的人交谈,他说他在其他点击事件上也遇到了同样的问题。那么我们两个都做错了什么,还是我们的应用程序缺少某些必要的内容,以便识别UI?

我收到的完整错误是:Error CS0234:“app name”命名空间中不存在“UI”类型或命名空间(是否缺少程序集引用?)


是的。文件所在的文件夹名为Windows。这是我的问题吗? - Buck Hicks
2个回答

6

在命名空间'应用程序名称'中找不到类型或命名空间名为'UI'的名称

这意味着您的应用程序中有一个包含Windows的命名空间。

要么更改您的命名空间,要么在UWP之前加上前缀:

global::Windows.UI.Xaml.Controls

另请参见如何使用全局命名空间别名(C#编程指南)


1
我能看到的一个错误是你的处理程序应该被标记为async,同时在调用异步方法时应该使用await运算符:
private async void dg_ItemClick(object sender, Windows.UI.Xaml.Controls.ItemClickEventArgs e)
{
        Biz.Customer cust = e.ClickedItem as Biz.Customer;
        var messageDialog2 = new MessageDialog(cust.Code, cust.Company);
        await messageDialog2.ShowAsync();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接