Xamarin表单:如何从视图模型中更改标签文本值?



我想在新页面按下后退按钮时更改上一页的标签文本值。我从新页面使用消息中心功能,并将代码流重定向到视图模型中的刷新客户详细信息((。

我尝试了如下。

string _fullname = "";
public string FullName
{
protected set
{
if (_fullname != value)
{
_fullname = value;
OnPropertyChanged("FullName");
}
}
get { return _fullname; }
}
public void RefreshCustomerDetails()
{
//FullName = null;
FullName = Application.Current.Properties["customerFullName"].ToString();
}
<Label 
x:Name="title_label"
Text="{Binding FullName}"
Font="Bold,18" 
TextColor="Black"
Margin="-20,0,0,0"
HorizontalOptions="CenterAndExpand" 
VerticalOptions="Center"/>

从本地数据库获取全名值并像上面的代码一样绑定它,但在按后对接时名称没有变化。尝试分配空值,这也不起作用。

对我的代码有任何更正吗?

你的代码看起来不错,它应该可以工作。您的视图模型是否从INotifyPropertyChanged中消失?这是OnPropertyChanged()所必需的:

public class MyViewModel : INotifyPropertyChanged
{
// stuff ...
}

更新了如下代码,删除了 RefreshCustomerDetails(( 并在MessagingCenter中添加Device.BeginInvokeOnMainThread

Text="{Binding FullName,Mode=TwoWay}"

MessagingCenter.Subscribe<AddCustomerBySOPage>(this, "Refresh", (sender) =>
{
Device.BeginInvokeOnMainThread(() =>
{
FullName = Application.Current.Properties["customerFullName"].ToString();
});
});

相关内容

  • 没有找到相关文章

最新更新