绑定无效-没有属性,可绑定属性或事件发现错误

时间:2019-03-20 18:15:11

标签: c# xamarin.forms

我在绑定方面遇到问题,但是我首先搜索了几个与此相关的问题,但是没有运气,下面是错误提示:

  

错误:位置18:36。找不到属性,可绑定属性或事件   或“值”和“属性”之间的类型不匹配

下面是我的 xaml 文件:

<controls:MapView x:Name="map" VerticalOptions="FillAndExpand">
            <controls:MapView.Center>
                <controls:Position Lat="{Binding latitude}" Long="{Binding longitude}" />
            </controls:MapView.Center>
        </controls:MapView>

然后 c# 代码如下:

public partial class DisplayMap : ContentPage
    {

        private double latitude { get; } 
        private double longitude { get; } 

        public DisplayMap()
        {

            InitializeComponent();

            this.latitude = 0.3476;
            this.longitude = 32.5825;

            BindingContext = this;

        }

我想念什么?

2 个答案:

答案 0 :(得分:1)

该问题似乎是Position类中缺乏可公开访问的可绑定属性(请注意,该错误提到LatPosition的成员)。 Position应该看起来像这样:

public class Position : BindableObject
{
    public static readonly BindableProperty LatProperty = BindableProperty.Create(nameof(Lat), typeof(double), typeof(Position), 0);
    public double Lat
    {
        get { return (double)this.GetValue(LatProperty); }
        set { this.SetValue(LatProperty, value); }
    } 

    public static readonly BindableProperty LongProperty = BindableProperty.Create(nameof(Long), typeof(double), typeof(Position), 0);
    public double Long
    {
        get { return (double)this.GetValue(LongProperty); }
        set { this.SetValue(LongProperty, value); }
    }

    // ...

我建议您看看official documentation for Bindable Properties。本质上,您收到的错误消息是因为尝试使用访问器LatProperty进行绑定时正在寻找Lat

答案 1 :(得分:0)

之所以不能使用Lat and Long属性,是因为如果您检查Position类,则没有为它们定义Bindable属性,这意味着您无法在XAML中访问它们,

一种可能的解决方案是下载示例项目并获取代码并对其进行相应更改以使其具有可绑定属性。

为此,您可以检查@Aaron的答案