绑定无法在Rg.Plugins.Popup中用于自定义控件

时间:2019-08-21 16:13:37

标签: xamarin.forms

我有一个基于ContentView的自定义控件,其中包含一些BindableProperty字段。这些控件在普通的ContentPage页面上效果很好。

我现在正在尝试使用Rg.Plugins.Popup nuget包在弹出窗口中使用它们。控件正常显示,但是它们从不显示任何值-绑定似乎不起作用。在调用弹出式窗口ContentView的构造函数之前,这些字段的确显示为绑定为null,但是当BindingContext更改时,什么也没有发生。

以下是在控件中设置BindableProperty的方式:

public string FieldValue { get; set; }
public static readonly BindableProperty FieldValueProperty = BindableProperty.Create(
                                                             propertyName: "FieldValue",
                                                             returnType: typeof(string),
                                                             declaringType: typeof(MFGField),
                                                             defaultValue: "",
                                                             defaultBindingMode: BindingMode.TwoWay,
                                                             propertyChanged: FieldValuePropertyChanged);

private static void FieldValuePropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
    var control = (MFGField)bindable;
    if(newValue != null)
        control.ValueEntry.Text = newValue.ToString();
}

这是在XAML中进行设置的方式:

<MyNamespace:MFGField x:Name="OrderNumber" FieldValue="{Binding CurrentPick[Order_Number]}" LabelText="Order Number:" ReadOnly="true" Grid.Column="0" Grid.Row="0"/>

弹出式ContentView当前具有一个ViewLifecycleEffect,用作弹出式窗口的“ OnAppearing”,并且当前是我在加载数据后设置BindingContext的位置:

        private async void ViewLifecycleEffect_OnLoaded(object sender, EventArgs e)
    {
        await callingPage.LoadBinRecord(callingPage.SearchTextValue);
        ((AppData)this.BindingContext).CurrentPick = ((AppData)this.BindingContext).CurrentPicks[((AppData)this.BindingContext).PickIndex];
    }

我已经确认应该绑定的对象中的数据存在并且正确,但是当BindingContext更新时,不会调用我字段的PropertyChanged函数。

一段时间后,我将返回Xamarin Forms,我确定自己遗漏了一些明显的内容,但是我仍然遗漏了它。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

抱歉,此问题似乎是由于我不幸选择要绑定的字段而导致的。该对象中有200多个字段,而我碰巧选择了几个相当合理的选择进行测试,其中的值意外为空。

最初,我确实在正确设置BindingContext时遇到问题,并且该字段问题使我无法看到我实际上已解决了该问题。实际上,既然绑定了正确的字段,绑定实际上似乎就可以正常工作了。