1

我在我的 Android 应用程序中构建了一个 MvxBindableSpinner:

<TableRow>
    <TextView             
      android:text="Mandant:"
      android:width="0px"
      android:layout_weight=".22" />
      <cirrious.mvvmcross.binding.android.views.MvxBindableSpinner
        android:layout_weight=".78"
        local:MvxDropDownItemTemplate="@layout/mandantlistitem_dropdown"
        local:MvxItemTemplate="@layout/mandantlistitem"
        local:MvxBind="{'ItemsSource':{'Path':'Mandanten'},'SelectedItem':{'Path':'SelectedMandant','Mode':'TwoWay'}}"/>
</TableRow>

MandantClass 很简单:

//Class
public class Mandant
{
    //Properties

    public string MandantBezeichnung { get; set; }
}

我遇到的问题是,SelectedItem 不起作用.. 无论我选择什么,它总是“null”.. SelectedItem 的 ViewModel 上的属性如下所示:

    private string selectedMandant;
    public string SelectedMandant
    {
        get { return selectedMandant; }
        set { selectedMandant = value; FirePropertyChanged(() => SelectedMandant); }
    }

我尝试了一切,但无法让它工作..它编译得很好并且没有错误消息..但它总是为空..也许有人可以帮助我?

4

1 回答 1

1

关于如何调试/修复这个问题,我可以提出一些建议。


首先,您能否将绑定跟踪级别设置为诊断 - 在您的代码调用中的某处:

 MvxBindingTrace.TraceBindingLevel = MvxTraceLevel.Diagnostic;

这是否揭示了有关失败的更多信息?


其次,如果您要链接到源代码,请尝试_spinner_ItemSelectedMvxSpinnerSelectedItemBinding中设置断点和/或添加一些额外的跟踪- 此绑定事件是否被触发?它是否一直成功到FireValueChanged通话?

根据所揭示的内容,然后尝试其他调试步骤,例如在MvxBindableSpinner.cs中进行跟踪。


第三...您能否尝试与现有示例进行比较-我认为 Spinner 的想法最初来自https://github.com/Zoldeper/Blooor/-所以也许可以看看ProductEditView.axml

该代码有效吗?如果是这样,你能看出区别吗?

警告:在编写 Blooor 示例后,代码可能已更改


最后......这只是一种预感......你能在这里发布更多你的 ViewModel 吗?我想知道您是否存在类型不匹配...例如,您的 selectedItem 是一个字符串但应该是 Mandant 吗?


如果这是 MvvmCross 中的一个错误,那么“抱歉”并将其报告为问题 - 在https://github.com/slodge/MvvmCross/issues上- 最好使用可重现的样本。

于 2012-11-23T10:01:37.783 回答