簡體   English   中英

如何顯示在Picker中使用Xamarin占用MVVM的值

[英]How to show values in Picker occupying MVVM with Xamarin

我想對制造商對象的ObservableCollection進行Bindar並在占用Xamarin中MVVM模式的Picker中顯示其Name屬性,但是我沒有得到結果(Blank Picker)

截圖

該選擇器顯示在“視圖過濾器” SisquimView.xaml中,如下所示

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             BindingContext="{Binding Main, Source={StaticResource Locator}}"
             x:Class="AppValora.Views.Sisquim.FiltrosSisquimView"
             Title="SISQUIM®">   

    <StackLayout
        Orientation="Vertical"
        BindingContext="{Binding Filtros}">

        <Picker Title="Seleccione Fabricante"               
                Margin="15,5,15,5"
                HorizontalOptions="FillAndExpand"
                ItemsSource="{Binding Fabricantes, Mode=TwoWay}"
                ItemDisplayBinding="{Binding Name}"
                SelectedItem="{Binding Name}">         
        </Picker>   

    </StackLayout>
</ContentPage>

如前所述,包含Picker的StackLayout在MainViewModel中聲明如下

public FiltrosViewModel Filtros { get; set; }

然后在我的FiltersViewModel.CS中聲明一個Observable集合,該集合將具有我的Picker控件(除了在構造函數中對其進行初始化),並填充具有兩個Id和Name屬性的數組

 public ObservableCollection<Fabricante> Fabricantes { get; set; }

 public FiltrosViewModel()
  {       
      Fabricantes = new ObservableCollection<Fabricante>();

      LoadFabricantes();
   }

  async void LoadFabricantes()
  {
            IsRunning = true;

            //CONSUMING API...

            var list = response.Fabricantes;
            Fabricantes = new ObservableCollection<Fabricante>(list);

            IsRunning = false;

  }

如何在使用Xamarin的Picker占用MVVM中顯示值

我想對制造商對象的ObservableCollection進行Bindar並在占用Xamarin中MVVM模式的Picker中顯示其Name屬性,但是我沒有得到結果(Blank Picker)

該選擇器顯示在“視圖過濾器” SisquimView.xaml中,如下所示

如前所述,包含Picker的StackLayout在MainViewModel中聲明如下

然后在我的FiltersViewModel.CS中聲明一個Observable集合,該集合將具有我的Picker控件(除了在構造函數中對其進行初始化),並填充具有兩個Id和Name屬性的數組

如您所見,我正確地填寫了Observable Collection“ Fabricantes”

賓語

但是,如何在Picker中顯示Name屬性? 我是使用MVVM的新手,請記住,我已將ViewModel正確地安裝到Main中(因為其他控件正常工作)。一旦用戶選擇了該名稱,我可以搶救該名稱的ID,對我有什么幫助嗎?

問題是這一行:

Fabricantes = new ObservableCollection<Fabricante>(list);

當您新建一個ObservableCollection您會丟失實際的綁定。 您要么需要再次設置BindingContext ,但這不是您想要的。 而是清除現有集合並重新填充它。 例如,像這樣:

var list = response.Fabricantes;

Fabricantes.Clear();

foreach (var item in list)
    Fabricantes.Add(item);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM