我希望我的android视图触发一个方法,以便在ViewModel中某个属性发生更改时创建Toast消息。我发现的所有示例都在XML中绑定。这看起来简单得多,但我找不到任何例子。
答案 0 :(得分:2)
您可以通过在视图中创建对viewmodel的弱订阅并在属性更改时显示toast来执行此操作: -
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Android.OS.Bundle savedInstanceState)
{
IMvxNotifyPropertyChanged viewModel = ViewModel as IMvxNotifyPropertyChanged;
viewModel.WeakSubscribe(PropertyChanged);
return base.OnCreateView(inflater, container, savedInstanceState);
}
private void PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "the property")
{
//Display toast
}
}
但是我很想让你的viewmodel控制这种行为(你是否要为每个实现编写上面的代码?)
只需通过nuget添加UserInteraction插件,然后执行以下操作:
private readonly IUserInteraction _userInteraction;
public FirstViewModel(IUserInteraction userInteraction)
{
_userInteraction = userInteraction;
}
private string _hello = "Hello MvvmCross";
public string Hello
{
get { return _hello; }
set
{
_hello = value;
RaisePropertyChanged(() => Hello);
_userInteraction.Alert("Property Changed!");
}
}
这不显示祝酒词,它会显示一个消息框,但希望它会给你足够的信息。
最后,您可以使用信使插件发送“Show Toast”消息。