我被MvvmCross困住了。我不知道该怎么处理。
情况:
我有一个叫做
MyTempClass看起来是这样的:
public class MyTempClass
{
public string ImageName { get; set; }
public bool IsTheCorrectAnswer { get; set; }
public bool HasBeenClicked { get; set; }
}我有一个MyTempClass的列表。
从这个列表中,我迭代并创建一个带有按钮的视图。
对于每个按钮,我可以在这样的命令中成功地传递我要遍历的对象:
for (var i = 0; i < vmExercises.Count; i++) //This is the list...
{
//Create btn & add to the view...
var currentExercise = vmExercises[i];
set.Bind(btn).WithClearBindingKey(currentExercise.ImageName).To(vm => vm.TestCommand).CommandParameter(currentExercise).Apply();
}TestCommand使用的方法如下所示:
public IMvxCommand TestCommand => new MvxCommand<MyTempClass>(ATestMethod);
private void ATestMethod(MyTempClass obj)
{
obj.HasBeenClicked = true;
CurrentTempClass = obj;
}问题
我还想绑定此循环中按钮的可见性。我试过这样做:
set.Bind(btn).WithClearBindingKey(currentExercise.ImageName).For("Visible").To(vm => vm.ShouldBeVisible).Apply();ShouldBeVisible看起来是这样的:
public bool ShouldBeVisible
{
get
{
if (CurrentTempClass.IsTheCorrectAnswer && CurrentTempClass.HasBeenClicked)
{
return false;
}
return true;
}
}问题是:
如果其中一个应该被隐藏,所有其他按钮都会被隐藏。
我做错了什么?还有其他人做过这个吗?
我非常感谢你的帮助!)
发布于 2018-03-09 01:39:11
对于可见性,您应该使用MvvmCross可见插件:https://www.mvvmcross.com/documentation/plugins/visibility
我还建议:从getter和setter中删除逻辑。如果属性被更新,请调用theVisibility.Set上的theVisibility.Set(),使绑定工作。
https://stackoverflow.com/questions/49175027
复制相似问题