Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从MVVM到Xamarin主页的信息中心_C#_Xamarin_Xamarin.forms_Viewmodel - Fatal编程技术网

C# 从MVVM到Xamarin主页的信息中心

C# 从MVVM到Xamarin主页的信息中心,c#,xamarin,xamarin.forms,viewmodel,C#,Xamarin,Xamarin.forms,Viewmodel,我需要使用Xamarin中的MessagingCentre来允许我的ViewModel向我的主页发送消息,作为按钮命令的一部分 在MainPage.xaml.cs中,我订阅了messagecenter,查找一条“Focus”消息,然后将表单的焦点设置为一个名为txtFirstName的条目控件 public MainPage() { InitializeComponent(); BindingContext = new ViewModel();

我需要使用
Xamarin
中的
MessagingCentre
来允许我的ViewModel向我的主页发送消息,作为按钮命令的一部分

MainPage.xaml.cs
中,我订阅了
messagecenter
,查找一条“Focus”消息,然后将表单的焦点设置为一个名为txtFirstName的条目控件

public MainPage()
    {
        InitializeComponent();
        BindingContext = new ViewModel();

        MessagingCenter.Subscribe<MainPage>(this, "Focus", (sender) => { txtFirstName.Focus(); });
    }
public主页()
{
初始化组件();
BindingContext=新的ViewModel();
订阅(这个,“焦点”,(发送方)=>{txtFirstName.Focus();});
}
在我的ViewModel中,命令是:

 private void ClearFormCommand(object obj)
{
    FirstName = string.Empty;
    Surname = string.Empty;
    Age = string.Empty;
    AboutMe = string.Empty;

    MessagingCenter.Send<MainPage>(this, "Focus");
}
private void ClearFormCommand(object obj)
{
FirstName=string.Empty;
姓氏=字符串。空;
Age=string.Empty;
AboutMe=string.Empty;
发送(这是“焦点”);
}
但是,
MessagingCentre.Send
行中的
有错误

参数1:无法从“ViewModel”转换为“AppName.MainPage”


要将消息发送到
主页
,我需要在VM中用什么替换

常规替换为您的viewmodel类型
viewmodel
(对于订阅和发送呼叫)

首先,位于MessagingCenter.send(此“焦点”)是主页的实例。根据您的代码,似乎发送和订阅都可以

在MainPage构造函数中,您将Bindingcontext分配给ViewModel的实例。这里的代码可疑。只需再次调试代码,并尝试找出实际的根本原因或提供完整的代码

有关信息中心的更多信息,请阅读

希望这对你有帮助。
谢谢

关闭-我不得不在
主页
中将其更改为
。订阅
,然后在我的ViewModel中将其更改为
。发送(此“焦点”)
。很好,但正如您的例外情况所述,您输入的类型错误。因此,请始终查看方法签名,您下次可能会自己发现:)