1

我有一个带有 2 个文本框的视图和一个调用 ViewModel 上的操作以显示另一个视图的按钮;将在其中显示的内容取决于 2 texbox 的值。

出于这个原因,在调用我的 ViewModel 之前,我想检查文本框的值,如果它为空,则显示一个对话框。现在调用我的 ViewModel 我已经添加了一个这样的绑定:

 this.AddBindings(new Dictionary<object, string>()
        {

        { btnSearch, "TouchUpInside GoParameterizedCommand" },
        });

作为瑞士装订。现在,如果我想使用相同的事件来检查我的文本框是否已验证并且不调用 GoParameterizedCommand,我该怎么办?

4

1 回答 1

1

您可以将所有控件绑定到 ViewModel 属性,例如:

this.AddBindings(new Dictionary<object, string>()
{
    { btnSearch, "TouchUpInside GoCommand" },
    { text1, "Text MyText" },
    { switch1, "On MyOption" },
   // ...
};

然后在GoCommand处理程序中,您可以放置​​您需要的任何逻辑:

public ICommand GoCommand
{
  get
  {
     return new MvxCommand(() => {
          if (MyOption)
          {
              ShowViewModel<OptionViewModel>();
          }
          else
          {
              ShowViewModel<DetailViewModel>(new { text = MyText });
          }
      });
   }
 }

为了显示一个对话框——例如一个错误对话框——那么最好使用信使来完成——从视图模型发送一条错误消息。这里有一些关于错误处理的问题 - 例如http://slodge.blogspot.co.uk/2012/05/one-pattern-for-error-handling-in.html - 还有很多其他选项可供选择用户提示该做什么 - 例如,您可以将文本字段的背景颜色绑定到IsMyTextValid属性。

于 2013-06-23T10:36:44.053 回答