我有2个字段的模型Names
。
public class Names
{
public string ID { get; set; }
public string Name { get; set; }
}
我需要从我的型号Names
获取所有名称到Xamarin中的Picker。
<Picker Title="Select a name"
ItemsSource="{Binding AllNames}"
ItemDisplayBinding="{Binding Name}" />
最简单的方法是什么?
您需要在列表内在视图模型中使用要在列表中使用的对象创建一个ObservableCollection。这样:
public class ViewModel
{
ObservableCollection<Names> allNames = new ObservableCollection<GroupedReportModel>();
public ObservableCollection<Names> AllNames
{
get { return allNames; }
set { SetProperty(ref allNames, value); }
}
}
setProperty是您通过在您的ViewModel中添加InotifyPropertyChanged的实现来获得的。
我使用的代码看起来像这样:
protected bool SetProperty<T>(ref T backingStore, T value, [CallerMemberName]string propertyName = "", Action onChanged = null)
{
if (EqualityComparer<T>.Default.Equals(backingStore, value))
return false;
backingStore = value;
onChanged?.Invoke();
OnPropertyChanged(propertyName);
return true;
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
var changed = PropertyChanged;
if (changed == null)
return;
changed.Invoke(this, new PropertyChangedEventArgs(propertyName));
}