我尝试使用带有FieldBinding插件的Visibility插件,但没有运气。
模特方:
/// <summary>
/// Gets or sets the birthdate.
/// </summary>
/// <value>
/// The birthdate.
/// </value>
public DateTime? Birthdate { get; set; }
ViewModel方:
public class DisplayUserViewModel : BaseUserViewModel
{
/// <summary>
/// The user
/// </summary>
public readonly INC<User> User = new NC<User>();
}
查看方面,首先尝试:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="@dimen/ListIconTwoLineTileHeight"
android:paddingRight="@dimen/ListIconTwoLineTextMarginRight"
local:MvxBind="Visibility User.Birthdate, Converter=Visibility">
第二次尝试:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="@dimen/ListIconTwoLineTileHeight"
android:paddingRight="@dimen/ListIconTwoLineTextMarginRight"
local:MvxBind="Visibility Visibility(User.Birthdate)">
但结果相同:
MvxBind ( 2574): 33.60 Failed to create target binding for binding Visibility for MvxValueConverterValueCombiner combiner-operation
我只是以生日为例,但每个Visibility绑定都失败了(我有x个绑定的x错误消息)。
编辑1
其他绑定工作,我绑定了一堆文本,并且都显示良好:
<TextView
style="@style/TextView.ListWithIcon.Single"
android:layout_marginTop="@dimen/ListIconTwoLineTextMarginTop"
local:MvxBind="Text User.FirstName" />
我也尝试绑定到INPC属性,结果相同。
编辑2
正如斯图尔特所说,我试过这个:
<TextView
style="@style/TextView.ListWithIcon.Single"
android:layout_marginTop="@dimen/ListIconTwoLineTextMarginTop"
android:layout_marginLeft="@dimen/ListIconTextMarginLeft"
local:MvxBind="Text Visibility(User.Birthdate)">
如果Birthdate为null,则TextView上的可见性转换器似乎有效:
Birthdate: Gone
但它似乎没有绑定到visibility属性:
<TextView
style="@style/TextView.ListWithIcon.SecondLine"
android:layout_below="@+id/Birthday"
local:MvxBind="Visibility Visibility(User.Birthdate)"
android:text="Whatever birthdate" />
显示&#34;无论生日如何&#34;而Visibility(User.Birthdate)返回Gone ......
编辑3
如果使用Visible伪属性,一切都按预期工作。
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="@dimen/ListIconTwoLineTileHeight"
android:paddingRight="@dimen/ListIconTwoLineTextMarginRight"
local:MvxBind="Visible User.Birthdate">
答案 0 :(得分:3)
我对LinearLayout也有同样的问题:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:background="@color/white"
local:MvxBind="Visibility Visibility(IsLoading)">
LinearLayout的可见性不会绑定到我的视图模型:
无法为绑定创建目标绑定MvxValueConverterValueCombiner组合器操作的可见性
解决方案:在LinkerPleaseInclude.cs中添加一个条目,以便不从视图中去除Visibility属性:
public void Include(LinearLayout layout)
{
layout.Click += (s, e) => layout.Visibility = layout.Visibility - 1;
}
答案 1 :(得分:0)
有2种情况:
a)local:MvxBind="Visibility Visibility(User.Birthdate)"
在您看来
b)在您的Bootstrap文件夹中添加一个VisibilityPluginBootstrap.cs文件,如下所示:
using MvvmCross.Platform.Plugins;
namespace YourNameSpace.Droid.Bootstrap
{
public class VisibilityPluginBootstrap
: MvxPluginBootstrapAction<MvvmCross.Plugins.Visibility.PluginLoader>
{
}
}
如果您使用MvvmCross 6及更高版本,则只需使用:
local:MvxBind="Visible User.Birthdate"
在您的视图中
并且不需要Bootstrap文件: