MVVMCross Spinner - SelectedItem不工作?

时间:2012-11-23 09:25:28

标签: c# android xamarin.android spinner mvvmcross

我在我的Android-Application中构建了一个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”,无论我选择什么..在SelectedMtem的ViewModel上的属性如下所示:

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

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

1 个答案:

答案 0 :(得分:1)

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


首先,您可以将绑定跟踪级别设置为Diagnostic - 代码调用中的某个位置:

 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上 - 最好是可重复的样本。