在视图加载时隐藏 UIView - Xamarin iOS 和 MvvmCross

Hide UIView on view load - Xamarin iOS and MvvmCross

我试图在视图加载时隐藏一个 ui 元素。我正在使用 Xamarin iOS 和 MvvmCross (6.2.3.0)。在我看来,我创建了一个 ui 文本字段并添加了以下绑定:

public override void ViewDidLoad()
{
//adding uitextfield
var set - this.CreateBindingSet(MyViewConroller, MyViewModel>();
set.Bind(uitextfield).For("Visibility").To(vm => vm.FieldVisibility).TwoWay().WithConversion("Visibility");
}  

这是我的视图模型:

public MyViewModel : MvxViewModel
{
private bool _fieldVisibility;
public bool FieldVisibility
{
get {return _fieldVisibility;}
set {
SetProperty(ref _fieldVisibility, value);
}

public override Task Initialize() {
FieldVisibility = false;
}

但是当加载视图时,我的 uitextfield 仍然可见。我尝试调用 RaisePropertyChanged,但没有帮助:

private bool _fieldVisibility;
    public bool FieldVisibility
    {
    get {return _fieldVisibility;}
    set {
    SetProperty(ref _fieldVisibility, value);
RaisePropertyChanged(nameof(FieldVisibility));
    }

当我更改其他一些视图模型 属性 并简单地调用时,它起作用了:

private string _otherProperty;
        public string OtherProperty
        {
        get {return _otherProperty;}
        set {
        SetProperty(ref _otherProperty, value);
FieldVisibility = false;
    RaisePropertyChanged(nameof(FieldVisibility));
        }

但我想在视图加载时隐藏此 ui 文本字段。你能为此提出任何解决方案吗?如果有任何提示,我将不胜感激。谢谢!!

我们现在对这样的东西有强类型绑定:

set.Bind(uitextfield).For(v => v.BindVisible()).To(vm => vm.FieldVisibility);

你在这里真的不需要可见性转换器,没有它应该也能工作。

记得还要在您的绑定集上调用 Apply()

另外 TwoWay() 不会在这里做任何事情,因为没有绑定目标允许 UIView 可见性的双向绑定。