[英]MvvmCross Xamarin.Android FloatingActionButton toggle visibility
這是我的FloatingActionButton:
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab_add_retailer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:tint="@android:color/white"
app:backgroundTint="@color/colorPrimary"
app:srcCompat="@drawable/ic_add_black_24dp"
local:MvxBind="Visibility IsAddButtonVisible, Converter=Visibility" />
其可見性屬性通過MvvmCross綁定到IsAddButtonVisible:
private bool _isAddButtonVisible = true;
public bool IsAddButtonVisible
{
get
{
return _isAddButtonVisible;
}
set
{
_isAddButtonVisible = value;
RaisePropertyChanged(() => IsAddButtonVisible);
}
}
當我更改布爾值時
ViewModel.IsAddButtonVisible = false;
...什么都沒發生。 我在這做錯了什么? 提前致謝!
編輯:當我使用Visible綁定時,切換工作
local:MvxBind="Visible IsAddButtonVisible"
但現在我在FloatingActionButton上看不到任何隱藏/顯示動畫......
您必須使用自定義綁定來使用方法調用而不是Visibility
ViewStates
更改。
根據綁定的bool值創建處理執行show和hide方法調用的目標綁定。
public class FloatingActionButtonAnimateVisibleTargetBinding
: MvxAndroidTargetBinding
{
protected FloatingActionButton View => (FloatingActionButton)Target;
public FloatingActionButtonAnimateVisibleTargetBinding(FloatingActionButton target)
: base(target)
{
}
public override Type TargetType => typeof(bool);
protected override void SetValueImpl(object target, object value)
{
var isVisible = value.ConvertToBoolean();
var floatingActionButton = target as FloatingActionButton;
if (isVisible)
floatingActionButton.Show();
else
floatingActionButton.Hide();
}
}
在您的平台Setup.cs
注冊自定義綁定
protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
{
base.FillTargetFactories(registry);
registry.RegisterCustomBindingFactory<FloatingActionButton>(
"VisibleAnim",
button => new FloatingActionButtonAnimateVisibleTargetBinding(button));
}
然后,您應該能夠在XML中使用綁定
local:MvxBind="VisibleAnim IsAddButtonVisible"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.