2014-11-13 136 views
3

我尝试使用带有FieldBinding插件的Visibility插件,但没有运气。可见性绑定失败

型号的一面:

/// <summary> 
    /// Gets or sets the birthdate. 
    /// </summary> 
    /// <value> 
    /// The birthdate. 
    /// </value> 
    public DateTime? Birthdate { get; set; } 

视图模型方面:

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 

我刚接过生日作为一个例子,但每一个能见度绑定失败(我有X绑定X错误消息)。


编辑1

其他人结合工作,我绑定了一堆文字,并且所有显示效果出色:

 <TextView 
     style="@style/TextView.ListWithIcon.Single" 
     android:layout_marginTop="@dimen/ListIconTwoLineTextMarginTop" 
     local:MvxBind="Text User.FirstName" /> 

我也尝试绑定到一个INPC属性,相同结果。


EDIT 2

至于建议由Stuart,我想这:

<TextView 
    style="@style/TextView.ListWithIcon.Single" 
    android:layout_marginTop="@dimen/ListIconTwoLineTextMarginTop" 
    android:layout_marginLeft="@dimen/ListIconTextMarginLeft" 
    local:MvxBind="Text Visibility(User.Birthdate)"> 

而且在TextView的知名度转换似乎工作,如果生日是空:

Birthdate: Gone 

但它似乎并没有绑定到能见度原型RTY:

<TextView 
    style="@style/TextView.ListWithIcon.SecondLine" 
    android:layout_below="@+id/Birthday" 
    local:MvxBind="Visibility Visibility(User.Birthdate)" 
    android:text="Whatever birthdate" /> 

显示 “无论生日”,而能见度(User.Birthdate)返回飘......


编辑3

如果您使用的是可见的伪财产一切正常如预期。

<RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="@dimen/ListIconTwoLineTileHeight" 
      android:paddingRight="@dimen/ListIconTwoLineTextMarginRight" 
      local:MvxBind="Visible User.Birthdate"> 
+0

无法对此处的内容发表评论。是否还有其他错误消息或警告?你得到的是从https://github.com/MvvmCross/MvvmCross/blob/bbf9a2ac76e74d9404f4b57036c6e29dfe2cc6c3/Cirrious/Cirrious.MvvmCross.Binding/Bindings/MvxFullBinding.cs#L139,但我希望/希望更多。一些实验尝试:如果您使用INPC而不是绑定工作?如果您的属性不是Visibility(例如,如果您绑定到测试TextView中的文本),绑定是否工作?如果可以,最好编辑问题 - 在评论中回答更难以阅读... – Stuart

+0

不幸的是,我只是上面的错误(再编辑一次)。有没有更详细的日志选项? – Roubachof

+0

“如果您使用INPC,绑定是否工作?如果您的属性不是Visibility(例如,如果您绑定到测试TextView中的文本),绑定是否可以工作?” - 也许尝试改变一件事 - 即如果你改变你的文本视图为'然后'local:MvxBind =“Text User.Birthdate”'那么这可能会给你一些线索 - 问题是INC,Visibilty,DateTime?还是别的什么... – Stuart

回答

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; 
} 
+0

是!我怀疑这类问题,但我没有想到这个财产本身。 – Roubachof