我在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”。ViewModel的SelectedItem的属性如下所示:

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


我尝试了所有内容,但无法正常工作。它可以很好地编译并且没有错误消息。但是它始终为null。也许有人可以帮助我吗?

最佳答案

关于如何调试/修复此问题,我有一些建议。



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

 MvxBindingTrace.TraceBindingLevel = MvxTraceLevel.Diagnostic;


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



其次,如果您链​​接到源代码,则尝试设置断点和/或在MvxSpinnerSelectedItemBinding_spinner_ItemSelected内添加一些其他跟踪-是否触发了此绑定事件?它是否一直成功到FireValueChanged调用?

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



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

该代码有效吗?如果是这样,您能发现差异吗?

警告:自编写Blooor示例以来,代码可能已更改



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



如果这是MvvmCross中的错误,请“对不起”并报告问题-在https://github.com/slodge/MvvmCross/issues上-最好使用可复制的示例。

关于c# - MVVMCross Spinner-SelectedItem无法正常工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13526085/

10-12 04:02