Mvvmcross通过自动布局绑定到可见性并完全隐藏视图 [英] Mvvmcross bind to Visibility with autolayout and fully hide view
问题描述
当前绑定到可见性"设置为Hidden = true.您将如何创建一个通用的可见性绑定,该绑定也将更改约束:将视图高度设置为0?
Currently binding to "Visibility" sets Hidden=true. How would you create a generic Visibility binding which also changes a constraint: sets the view height to 0 ?
推荐答案
有关创建绑定的教程,请参见 http://mvvmcross.blogspot.com/
For a tutorial on creating bindings, see the N=28 video on http://mvvmcross.blogspot.com/
To replace the existing visibility binding, simply create your own class based on https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Binding.Touch/Target/MvxUIViewVisibleTargetBinding.cs
public class MyUIViewVisibleTargetBinding : MvxBaseUIViewVisibleTargetBinding
{
public MyUIViewVisibleTargetBinding(UIView target)
: base(target)
{
}
protected override void SetValueImpl(object target, object value)
{
var view = View;
if (view == null)
return;
var visible = value.ConvertToBoolean();
// your code here
// - in place of or in addition to:
// view.Hidden = !visible;
}
}
并使用以下命令将其注册为Setup
中的最后一步:
And register this as the last step in Setup
using:
protected override void InitializeLastChance()
{
base.InitializeLastChance();
var registry = Mvx.Resolve<IMvxTargetBindingFactoryRegistry>();
registry.RegisterCustomBindingFactory<UIView>("Visible",
view =>
new MyUIViewVisibleTargetBinding(view));
}
有关替换现有绑定的更多信息,请参见 MVVMCross将十进制绑定到UITextField删除小数点
For more on replacing existing bindings, see MVVMCross Binding decimal to UITextField removes decimal point
请注意,如果要替换所有Visible
绑定,则可能希望替换所有Visible
,Visibility
和Hidden
-请参见
Note that if you want to replace all Visible
bindings, then you might want to replace all of Visible
, Visibility
and Hidden
- see registrations in https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Binding.Touch/MvxTouchBindingBuilder.cs#L42
这篇关于Mvvmcross通过自动布局绑定到可见性并完全隐藏视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!