我需要在Xamarin
中使用MessagingCentre
,以允许我的ViewModel将消息发送到我的主页,作为按钮命令的一部分。
在MainPage.xaml.cs
中,我订阅了MessageCentre
,寻找"焦点"的消息,然后将表单的焦点设置为一个名为txtFirstName的Entry控件。
public MainPage()
{
InitializeComponent();
BindingContext = new ViewModel();
MessagingCenter.Subscribe<MainPage>(this, "Focus", (sender) => { txtFirstName.Focus(); });
}
在我的视图模型中,命令是:
private void ClearFormCommand(object obj)
{
FirstName = string.Empty;
Surname = string.Empty;
Age = string.Empty;
AboutMe = string.Empty;
MessagingCenter.Send<MainPage>(this, "Focus");
}
但是,MessagingCentre.Send
行中的this
错误。
参数 1:无法从"ViewModel"转换为"AppName.MainPage">
我需要将 VM 中的this
替换为什么才能将消息发送到MainPage
?
将<MainPage>
泛型替换为视图模型类型ViewModel
(对于订阅和发送调用(
首先,这个在MessagingCenter.Send(this, "Focus"(中;是你的主页的实例。根据您的代码,似乎发送和订阅都很好。
在 MainPage 构造函数中,您将 Bindingcontext 分配给 ViewModel 的实例。此代码在这里很可疑。只需再次调试您的代码并尝试找出实际的根本原因或提供完整的代码。
有关消息中心的更多信息,可以在此处阅读。
希望这对您有所帮助。 谢谢