【问题标题】:Binding not working in Rg.Plugins.Popup for custom control绑定在自定义控件的 Rg.Plugins.Popup 中不起作用
【发布时间】:2019-12-26 23:16:37
【问题描述】:

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

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

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

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"/>

弹出内容视图当前有一个 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,我确信我错过了一些明显的东西,但我仍然错过了它。任何帮助表示赞赏。

【问题讨论】:

  • 能否分享一个基本的演示,以便我们进行测试?

标签: xamarin.forms


【解决方案1】:

抱歉,这个问题似乎是我不幸选择绑定的字段造成的。对象中有200多个字段,我碰巧选择了几个相当合理的选择进行测试,其中的值意外地为空。

最初,我在正确设置 BindingContext 时确实遇到了问题,并且字段问题使我看不到我实际上已经解决了这个问题。由于绑定了正确的字段,绑定实际上似乎正在工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2015-04-25
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多