[英]How to show picker choose before button command in MVVM xamarin?
[英]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.