第一次使用MvvmCross Value转换器。我创建了一个值转换器来处理bool之间的数据操作?元素在我的视图和我的视图模型中的布尔属性。为什么不调用MvvmCross Value Converter的ConvertBack方法?
而我在视图的ViewDidLoad中将我的视图元素绑定到视图模型。
var set = this.CreateBindingSet<SettingsView, SettingsViewModel>();
set.Bind(wifiOnlyElement).For(View => View.BooleanValue).To(ViewModel => ViewModel.ConnectOnWifiOnly).WithConversion("NullableBoolean").TwoWay();
set.Apply();
注:我添加了.TwoWay()结合修改器set.Bind,思维模式可能必须明确指出,没有任何变化。
当视图出现时,调用NullableBooleanValueConverter的Convert方法。
但是,当视图关闭时,不会调用相应的ConvertBack方法。
基于this question我怀疑我没有绑定到正确的属性。我创建绑定的屏幕控件是Xamarin对话框/元素类的后继自定义UITableViewCell,此屏幕控件上的可空布尔值是公共的,这是在轻击元素时存储真/假值的位置。
BooleanValue是名为CheckboxElement的Dialog/Element类上的公共属性,它继承自基础Element类。
NSObject
|_ Element
|_ CheckboxElement
.BooleanValue
有一个在CheckboxElement被覆盖的属性调用选择,当元素被窃听改变BooleanValue中的价值。
public override void Selected(DialogViewController dvc, UITableView tableView, NSIndexPath indexPath)
{
BooleanValue = !BooleanValue;
...
}
所选内容由DialogViewController的RowSelected方法调用。
public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
Container.Selected(indexPath);
}
它调用DialogViewController的Selected方法(元素是CheckboxElement)。
public virtual void Selected(NSIndexPath indexPath)
{
var section = Root.Sections[indexPath.Section];
var element = section.Elements[indexPath.Row];
ActiveElement = element;
element.Selected(this, Root.TableView, indexPath);
}
看起来不像有什么事,有没有介入这。
让我知道你是否需要更多信息。提前致谢。
你可以编辑问题来添加'BooleanValue'在视图上的内容,以及当它发生变化时通知绑定的内容。例如它是一个复选框? – Stuart
@Stuart - 在内嵌上面添加了额外的BooleanValue信息。如果我需要详细说明或发布更多的代码,请告诉我。 – billmaya