mvxspinner不会更改我的viewmodel中的显示值

时间:2017-04-20 19:15:27

标签: xamarin.android mvvmcross

我有一个按钮来更改我的mvxspinner,但在我的视图模型中,我无法更改mvxspinner中显示的值。例如:

我在布局中有mvxspinner和按钮:

<MvxSpinner
      style="@style/SpinnerField.Filter"
      android:id="@+id/filter_listacliente_spinner_bairro"
      local:MvxBind="ItemsSource ListaBairro;SelectedItem FiltroBairro;"
      local:MvxItemTemplate="@layout/filter_spinner_bairro"
      local:MvxDropDownItemTemplate="@layout/filter_item_spinner_bairro" />

<Button
        android:id="@+id/filter_listacliente_btlimpar"
        android:theme="@style/DefaultButton"
        local:MvxBind="Click LimparFiltros" 
        style="@style/DefaultButtonFilter"/>

在我的ICommand中,我尝试将我的值更改为“Estado”,将ID更改为“-1”:

public ICommand LimparFiltros
{
    get
    {
        return new MvxCommand(() =>
        {

            FiltroEstado = new EstadoDto { IdEstado = -1, Descricao = "Estado" };

        });
    }
}

我的SelectedItem

var _filtroEstado = new EstadoDto();
public EstadoDto FiltroEstado
{
    get { return _filtroEstado; }
    set
    {
        _filtroEstado = value;

        RaisePropertyChanged(() => FiltroEstado);
    }
}

结果:我的展示中没有任何变化:(。

预期结果:我的显示屏已选择“Estado”描述

2 个答案:

答案 0 :(得分:1)

您正在处理支持字段_filtroEstado,这不会导致RaisePropertyChanged属性集中的FiltroEstado触发INotifyPropertyChanged事件。因此,视图永远不会收到有关更改的通知。

  

return new MvxCommand(() => { _filtroEstado = new EstadoDto { IdEstado = -1, Descricao = "Estado" }; });

此外,SelectedItem的引用需要来自绑定的ItemsSource列表。因此,您可以执行以下操作:

return new MvxCommand(() =>
{
    FiltroBairro = ListaBairro.FirstOrDefault(x => x.IdEstado == -1);
});

答案 1 :(得分:0)

您在MyServiceClient内设置私人变量_filtroEstado。因此,公开LimparFiltros财产上的set不会被解雇,FiltroEstado也不会。