2014-11-13 191 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