.NET Maui 将数据从 MainActivity.cs 传递到视图模型以显示它

.NET Maui pass data from MainActivity.cs to a view model in order to display it

提问人:taqasar-elcam 提问时间:10/23/2023 更新时间:10/24/2023 访问量:57

问:

我在特定于 Android 平台的代码文件 MainActivity.cs 中有一个字符串变量。 我还有一个视图模型,该模型与只有一个标签的视图绑定。

如何将此字符串变量从 MainActivity.cs 传递到我的视图模型?

                                                                                                                                  ....
Android .NET 毛伊

评论

0赞 Jason 10/24/2023
字符串值是否在启动时设置?或者您需要在应用程序启动后更新它?
0赞 taqasar-elcam 10/24/2023
@Jason 字符串最初设置为 null,然后从函数中获取值

答:

0赞 Jessie Zhang -MSFT 10/24/2023 #1

一个简单的方法是使用 Publish 和 subscribe to messages 来实现这一点。 您可以在视图模型中订阅消息,并在 .MainActivity.cs

但正如说明中提到的,

MessagingCenter已在 .NET 7 中弃用,并在 CommunityToolkit.Mvvm NuGet 包中替换为。WeakReferenceMessenger

从文档Messenger中,我们可以知道您可以使用以下代码发送和接收消息:

 // Create a message in your app
public class MyMessage : ValueChangedMessage<string>
{
    public MyMessage(string value): base(value)
    {        
    }
}

// Register a message in your view model
WeakReferenceMessenger.Default.Register<MyMessage>(this, (r, m) =>
{
    // Handle the message here, with r being the recipient and m being the
    // input message. Using the recipient passed as input makes it so that
    // the lambda expression doesn't capture "this", improving performance.

      var receivedstring = m.value;
});

// Send a message from `MainActivity.cs`
WeakReferenceMessenger.Default.Send(new MyMessage("test string"));

评论

0赞 Jessie Zhang -MSFT 11/2/2023
嗨,@taqasar-elcam,我可以知道您是否有机会检查我的答案吗?如果您有任何其他问题,我很乐意为您提供帮助。