Xamarin:未找到绑定属性

2024-04-11

这个应用程序在 UWP 中运行得很好。除了在 Android 上失败的一个更基本的属性之外,我已经删除了所有内容。它看起来像这样:

我的页面.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:ViewModels="clr-namespace:MyApp.ViewModels"
             x:Class="MyApp.Views.MyApp">
    <ContentPage.BindingContext>
        <ViewModels:MyViewModel />
    </ContentPage.BindingContext>
    <ContentPage.Content>
        <ScrollView>

            <StackLayout Style="{StaticResource PageForm}">

                <Picker ItemsSource="{Binding Modes}"
                    ItemDisplayBinding="{Binding Value}"
                    SelectedItem="{Binding SelectedMode}" />

            </StackLayout>

        </ScrollView>

   </ContentPage.Content>
</ContentPage>

我的页面.cs

using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace MyApp.Views
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class MyApp : ContentPage
    {
        public MyApp ()
        {
            InitializeComponent ();
        }
    }
}

MyViewModel.cs

using MyApp.Models;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
namespace MyApp.ViewModels
{
    public class MyViewModel: INotifyPropertyChanged
    {
        List<Mode> _modes;
        Mode _selectedMode;

        public event PropertyChangedEventHandler PropertyChanged;

        public MyViewModel()
        {
            Modes = new List<Mode>()
            {
                new Mode() { Key=ModeType.Mode1, Value="Mode1" },
                new Mode() { Key=ModeType.Mode2, Value="Mode2" }
            };
            SelectedMode = Modes.Single(m => m.Key == ModeType.Mode1);
        }

        public List<Mode> Modes {
            get { return _modes; }
            set {
                _modes = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Modes"));
            }
        }

        public Mode SelectedMode {
            get {
                return _selectedMode;
            }
            set {
                _selectedMode = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("SelectedMode"));
            }
        }

    }
}

Mode.cs

namespace MyApp.Models
{
    public enum ModeType { Mode1, Mode2 };
    public class Mode
    {
        public ModeType _key;
        public string _value;
        public ModeType Key {
            get
            {
                return _key;
            }
            set
            {
                _key = value;
            }
        }
        public string Value {
            get
            {
                return _value;
            }
            set
            {
                _value = value;
            }
        }
    }
}

我在调试控制台中看到的是

[0:] Binding: 'Value' property not found on 'MyApp.Models.Mode', target property: 'Xamarin.Forms.Picker.Display'

[0:] Binding: 'Value' property not found on 'MyApp.Models.Mode', target property: 'Xamarin.Forms.Picker.Display'

[0:] Binding: 'SelectedMode' property not found on 'MyApp.ViewModels.'MyApp', target property: 'Xamarin.Forms.Picker.SelectedItem'

就像我说的,如果我将它作为 UWP 应用程序运行,那么这是有效的,但当我在 Android 上尝试它时,它就不起作用。这就是我能说的,因为除了上面没有意义的错误之外,它并没有真正说明问题是什么。

视图模型的其余部分实际上是有效的。应用程序的主要部分可以工作,我什至可以在此视图模型上运行代码。如果我创建一个简单的字符串绑定,即使在 Android 上也可以工作。

任何帮助表示赞赏。


答案对我来说简直就是神奇。如果有人可以解释这一点,我会将您的答案标记为已接受的答案。

Anroid Project File > Properties > Linking > Set to None.

还是不行,所以我关闭了Visual Studio,并删除了PCL和Android项目中的bin和obj目录。终于成功了。

另一件事是,我现在似乎失去了将链接设置为 sdk 和用户程序集的能力。如果我在某个时候需要它怎么办?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xamarin:未找到绑定属性 的相关文章

  • TFS API - 缓慢的 foreach 变更集迭代

    问题背景 我正在使用 TFS api 查询 TFS 服务器上的大范围 1 600 文件 我从每个文件中收集其所有 ChangesetId 然后将其收集在列表中 代码 这是我正在使用的代码 它可以正确生成 QueryHistory 方法中指定
  • 如何在 C++ 中对四元结构进行有效排序?

    我有一个包含 x y z 和 w 成员的结构 如何高效排序 在 C 中首先按 x 然后按 y 按 z 最后按 w 如果你想实现字典排序 那么最简单的方法是使用std tie实现小于或大于比较运算符或函子 然后使用std sort http
  • 如何从 webmethod 向 AJAX 调用返回异常?

    我回来了List
  • .NET:EventHandler 竞争条件修复如何工作?

    以下模式用于在引发事件时避免竞争条件 以防另一个线程取消订阅 MyEvent 使其为空 class MyClass public event EventHandler MyEvent public void F EventHandler h
  • 为什么数组不可赋值? [复制]

    这个问题在这里已经有答案了 据我所知 C 标准禁止使用数组作为可修改的左值 即在赋值的左侧 int lhs 4 rhs 4 0 1 2 3 lhs rhs illegal 现在 我一直想知道为什么会这样 我可以看到上面的语句 以及写入数组的
  • 如何在方法模板中使用模板类型的引用传递参数?

    我目前正在努力编译以下代码 首先是包含带有方法模板的类的头文件 ConfigurationContext h class ConfigurationContext public template
  • 起订量工作单元

    我是单元测试的新手 我想为我的搜索功能创建一个测试 我的服务层看起来像 public class EmployeeService BaseService IEmployeeService public EmployeeService IUn
  • 获取不带波形符的泛型类名称[重复]

    这个问题在这里已经有答案了 我正在尝试获取类型名称T使用这个 typeof T Name 班级名称是ConfigSettings 而不是返回ConfigSettings它正在返回ConfigSettings 1 有什么具体原因吗 我怎样才能
  • DataGridView小数不排序

    好吧 我有一个 DataGridView 它的数据绑定如下 dataGridViewChartOre AutoGenerateColumns false dataGridViewChartOre DataSource xml GetOreC
  • C++在子类中调用虚方法

    我有以下课程 class A protected A inner public virtual void doSomething 0 class B public A void doSomething if inner NULL inner
  • 使用 c# 中的 c++ ref 中的引用从 C# 调用 C++ 代码错误

    所以在我的 c dll 文件中我得到了以下函数 DLL void GetUserPass char userName char passWord userName ceva passWord altceva 现在我想从 c 调用它 但它给了
  • 如何使用 Linq to Sql 修剪值?

    在数据库中 我有一个名为 联系人 的表 名字和其他此类字符串字段设计为使用 Char 数据类型 不是我的数据库设计 我的对象 Contact 映射到属性中的字符串类型 如果我想做一个简单的测试 通过 id 检索 Contact 对象 我会这
  • 如何使用 HttpClient 验证 Pardot API

    我花了大约一天的时间尝试对 Pardot API 进行身份验证 它不喜欢我尝试发布消息正文的方式 所以我想发布对我有用的解决方案 如果您有任何建议或替代方案 我想听听 ServicePointManager SecurityProtocol
  • C# 的 user32 和内核方法列表 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有一个很好的清单来说明我们可以从中进口什么user32 dll and kernel dll并在 C 中使用 我是 Windows A
  • 为什么 g++ 在编译的二进制文件中存储类名?

    我注意到如果我跑strings在我编译的程序上g 输出包含它使用的各种类的名称 该程序是用 O3并且没有 g or p 并且当我剥离二进制文件时 类名仍然存在 我想知道为什么有必要g 将此信息存储在二进制文件中 出现的类名似乎都是使用虚函数
  • 如何查明我的字符串是否包含“micro”Unicode 字符?

    我有一个包含实验室数据的 Excel 电子表格 如下所示 g L ppb 我想测试希腊字母 是否存在 如果发现我需要做一些特别的事情 通常 我会写这样的东西 if cell StartsWith matchSequence lt unive
  • Sharepoint 的 CAML 查询中的日期时间比较

    我正在尝试从共享点列表中获取某些项目 具体取决于自定义列中的日期 我已经使用 U2U Caml Builder 创建了查询 这很有效 但是当我将其放入 Web 部件中自己的代码中时 它总是返回列表中的所有项目 这是我的代码 DateTime
  • 如何获取数字列的确切类型,包括。规模和精度?

    有没有办法知道列中列的确切类型DataTable 现在我正在这样做 DataTable st dataReader GetSchemaTable foreach DataColumn col in st Columns var type c
  • 我可以创建一个 List> 吗?

    我正在尝试创建一个列表WeakReference使用 4 5 泛型实现 这样我就可以避免类型检查和转换WeakReference目标 但 WeakReference
  • 如何将 IDispatch* 放入托管代码中

    我一直在考虑尝试使用 C 编写一个实现 OPOS 服务对象的 COM 对象 我已经使用自动化和 MFC 在 C 中完成了它 这并不太困难 所以我坚持尝试将其转换为一种方法 我将排除界面中的其他方法 因为它们很简单 或者我希望如此 id 6

随机推荐