Windows 通用项目中不支持条目和选取器

Posted

技术标签:

【中文标题】Windows 通用项目中不支持条目和选取器【英文标题】:Entry and Picker not supported in a Windows Universal project 【发布时间】:2018-01-09 23:08:51 【问题描述】:

我创建了一个 Xamarin.Forms 解决方案(最新版本的 Xamarin 和 VS 2017 CE),并且我有针对 androidios 和 UWP 的项目。

我在共享项目中创建了一个用户控件,并尝试向其中添加一个条目和一个选取器控件,但我收到一个编译错误,提示“Windows 通用项目中不支持条目”。和“Windows 通用项目不支持选取器。”。我在任何文档中都找不到任何迹象表明这些控件与 UWP 不兼容,并且我发现人们似乎在 UWP 项目中非常愉快地使用这些控件的示例。

我错过了什么吗?如果无法使用这些控件,那么 Xamarin.Forms 的意义何在?我认为这是为了避免必须为每个平台创建完全不同的 UI。

此外,我的用户控件位于命名空间 MyApp.Views 中,并且 xaml 具有自动生成的“xmlns:local="using:MyApp.Views"" 行。这也会产生一个编译错误:“未定义的命名空间。‘使用’URI 引用了一个找不到的命名空间‘MyApp.Views’。”。这是自动生成的,后面的代码显然在那个命名空间中,所以我也不清楚这是什么意思。

<UserControl
    x:Class="MyApp.Views.SomeControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MyApp.Views"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="64"
    d:DesignWidth="400">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Picker x:Name="demographics" Grid.Row="0" Grid.Column="0"></Picker>
        <Entry x:Name="filter" Grid.Row="0" Grid.Column="1"></Entry>
    </Grid>
</UserControl>

【问题讨论】:

这是 IDE 中的错误、编译错误还是运行时错误?您的用户控制在共享项目中吗? 这是一个编译错误。用户控制在共享项目中。 请贴出相关代码和具体报错信息 我在帖子中发布了确切的错误消息。 xaml 只是基本的 等。 您正在尝试将 XF XAML 与 UWP 用户控件混合。这不是它的工作原理 【参考方案1】:

请注意,UWP UserControl 的 Xamarin Forms 版本是 ContentView。

在“MyApp”项目中创建 Xamarin Forms 控件,而不是在“MyApp.UWP”项目中;示例:

<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="MyApp.MyContentView">
  <ContentView.Content>
    <Entry />
  </ContentView.Content>
</ContentView>

用法,例如在“MyApp”项目中的MainPage.xaml

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:MyApp"
         x:Class="MyApp.MainPage">
  <local:MyContentView/>
</ContentPage>

【讨论】:

以上是关于Windows 通用项目中不支持条目和选取器的主要内容,如果未能解决你的问题,请参考以下文章

Windows Presentation Foundation(WPF)项目中不支持网格

装饰器不支持函数调用,但调用了“AngularFireModule”

来自程序集的类型是使用旧版本的 blend sdk 构建的,并且在 Windows Presentation Foundation 4 项目中不受支持

C++:为啥输出迭代器不支持比较操作?

C++ 自定义项目日志库,支持log分级标签耗时统计显示文件名方法名行号信息等,Windows&Linux通用

GitHub Go项目推荐|Golang下的命令行颜色渲染工具库|支持windows