2017-04-23 17 views
0

我有以下视图,其中AppCompatEditText的内容应该绑定到ViewModel的“ArticleName”属性。这在调试版本中工作正常,但在发布版本中不起作用。这种效应的原因是什么?这是对话框的一个非常基本的ViewModel。使用AppCompatEditText进行数据绑定在Release版本中不起作用

<RelativeLayout xmlns:local="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:minWidth="25px" 
    android:minHeight="25px"> 
    <TextView 
     android:id="@+id/txtHeadline" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/activity_vertical_margin" 
     android:textAppearance="@android:style/TextAppearance.DialogWindowTitle" 
     android:text="New item" /> 
    <AppCompatEditText 
     android:id="@+id/editArticleName" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/txtHeadline" 
     local:MvxBind="Text ArticleName" /> 
    <Button 
     android:id="@+id/btnAdd" 
     android:text="Add" 
     android:layout_below="@id/editArticleName" 
     android:layout_alignParentRight="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="@color/colorPrimary" 
     local:MvxBind="Click AddItem;Enabled CanAddItem" 
     style="?android:attr/borderlessButtonStyle" /> 

视图模型:

public class MyViewModel : MvxViewModel 
    { 
     private string m_ArticleName; 

     public string ArticleName 
     { 
      get 
      { 
       return m_ArticleName; 
      } 

      set 
      { 
       m_ArticleName = value; 
       RaiseAllPropertiesChanged(); 

       // this setter is never called 
      } 
     } 

     public MvxCommand AddItem 
     { 
      get; 
      private set; 
     } 

     public bool CanAddItem 
     { 
      get 
      { 
       return !String.IsNullOrEmpty(m_ArticleName); 
      } 
     } 

     public MyViewModel() 
     { 
      AddItem = new MvxCommand(doAddItem); 
     } 

     private void doAddItem() 
     { 
      // is never called in releases build because CanAddItem is never true 
     } 
    } 

我还添加以下语句LinkerPleaseInclude.cs没有效果:

public void Include(AppCompatEditText text) 
    { 
     text.TextChanged += (sender, args) => text.Text = "" + text.Text; 
     text.Hint = "" + text.Hint; 
     text.Text = "Test"; 
    } 

编辑:

同短跑运动员如果我将AppCompatEditText与常规EditText交换,则会发生t。

+0

如果有什么工作,并在释放模式不工作做检查的ProGuard。 – Killer

+0

Proguard不活跃(虽然从未更改过此设置) –

回答

1

在MvvmCross中,用于文本绑定的事件已更改为使用AfterTextChanged

所以,你可以做如下改变在调试版本的LinkerPleaseInclude.cs

text.AfterTextChanged += (sender, args) => text.Text = "" + text.Text;

+0

太棒了!有用。保存了我的一天。 –