【发布时间】: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