C# 循环Xamarin.iOS中的MvvmCross绑定

C# 循环Xamarin.iOS中的MvvmCross绑定,c#,xamarin.ios,mvvmcross,C#,Xamarin.ios,Mvvmcross,我遇到了MvvmCross的问题。 我不知道该怎么处理 情况: 我有一个叫做 MyTempClass 看起来是这样的: public class MyTempClass { public string ImageName { get; set; } public bool IsTheCorrectAnswer { get; set; } public bool HasBeenClicked { get; set; } } for (var i = 0; i &l

我遇到了MvvmCross的问题。 我不知道该怎么处理

情况:

我有一个叫做

MyTempClass
看起来是这样的:

public class MyTempClass
{
    public string ImageName { get; set; }
    public bool IsTheCorrectAnswer { get; set; }
    public bool HasBeenClicked { get; set; }
}
    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();
        }
我有一个MyTempClass的列表

从这个列表中,我迭代并创建一个带有按钮的视图

对于每个按钮,我都可以通过如下命令成功传递我正在迭代的对象:

public class MyTempClass
{
    public string ImageName { get; set; }
    public bool IsTheCorrectAnswer { get; set; }
    public bool HasBeenClicked { get; set; }
}
    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();
        }
问题

我还想在这个循环中绑定按钮的可见性。 我试过这样做:

    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();
    public bool ShouldBeVisible
    {
        get
        {
            if (CurrentTempClass.IsTheCorrectAnswer && CurrentTempClass.HasBeenClicked)
            {
                return false;
            }

            return true;

        }
    }
应该可见
如下所示:

    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();
    public bool ShouldBeVisible
    {
        get
        {
            if (CurrentTempClass.IsTheCorrectAnswer && CurrentTempClass.HasBeenClicked)
            {
                return false;
            }

            return true;

        }
    }
问题是:

如果一个按钮被隐藏,其他所有按钮都会被隐藏

我做错了什么?还有其他人这样做吗


我非常感谢你的帮助!:)

对于可见性,应使用MvvmCross可见性插件:

我还建议: 从getter和setter中删除逻辑。
在Visibility.Set上调用SetProperty(),以便在属性更新时绑定工作

对于可见性,您应该使用MvvmCross可见性插件:谢谢@wishmaster我用可见性插件和转换解决了它!:)很高兴帮助@wallef