【问题标题】:Xamarin.Forms - Pass a value from View to ViewModelXamarin.Forms - 将值从 View 传递到 ViewModel
【发布时间】:2022-01-22 13:58:43
【问题描述】:

有人知道如何从 Xamarin.Forms 中视图的代码隐藏中将随机字符串值传递给视图模型吗?

  1. 字符串值并非来自向用户显示的任何控件。

  2. 在页面显示给用户之后,该值才可用。

  3. 我只能从视图中使用该值,而不是视图模型。

【问题讨论】:

  • ((ViewModelType)this.BindingContext).SomeProperty = "someRandomString"
  • @woelliJ 我只知道有人会用一些实现一些 IOBservable 废话的自定义类来回应。谢谢楼主!
  • 请问?有BindingContext - 曾经SomeProperty 设置为您的字符串。抱歉,我假设您知道所说的事情,因为您提到了 MVVM。 (所有这些都是 xamarin 形式的 MVVM 的一部分)。您没有提供任何代码来构建答案。我不是故意不尊重的。
  • 显示一些你真正想做的代码。
  • @woelliJ 你不只是喜欢文字吗,哈哈。你给出的答案正是我需要的,你误解了我的意思。我会将您的答案标记为答案,但它没有被列为一个。

标签: c# mvvm xamarin.forms reactiveui


【解决方案1】:

您可以通过BindingContext 的BindingContext 访问您的ViewModel 来做到这一点,如下所示:

((ViewModelType)this.BindingContext).SomeProperty = "someRandomString"

【讨论】:

    【解决方案2】:

    听起来您可以在视图模型上创建一个属性或方法来接受该值。

    public string APropertyToSet {get; set;}
    public void SetSomeValueFromTheView(object value) {}
    

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      继续 WoeliJ 的回答,对于那些想要将按钮参数从视图传递到视图模型的人。在下面的示例中,我将按钮文本传递给视图模型中的某个变量。

      private void *Clicked Event* (object sender, EventArgs e)
      {
         ((*YourViewModel*)this.BindingContext).*SomeVarInViewModel* = ((Button)sender).Text as string;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-03
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多