循环中的 Mvvm 交叉绑定 Xamarin.iOS
MvvmCross binding in loop Xamarin.iOS
我遇到了 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;
}
}
问题是:
如果应该隐藏一个按钮,则所有其他按钮都会被隐藏。
我做错了什么?还有其他人这样做过吗?
非常感谢您的帮助! :)
对于可见性,您应该使用 MvvmCross Visibility 插件:https://www.mvvmcross.com/documentation/plugins/visibility
我还建议:
从您的 getter 和设置器中删除逻辑。
在 theVisibility.Set 上调用 SetProperty() 以使绑定在 属性 得到更新时起作用。
我遇到了 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;
}
}
问题是:
如果应该隐藏一个按钮,则所有其他按钮都会被隐藏。
我做错了什么?还有其他人这样做过吗?
非常感谢您的帮助! :)
对于可见性,您应该使用 MvvmCross Visibility 插件:https://www.mvvmcross.com/documentation/plugins/visibility
我还建议: 从您的 getter 和设置器中删除逻辑。 在 theVisibility.Set 上调用 SetProperty() 以使绑定在 属性 得到更新时起作用。