问题描述
考虑遵循Xamarin形式的XAML。我已经将Picker控件与ObserableCollection绑定在一起,并将MultiBinding分配给了它的ItemdisplayBinding属性-
<Picker ItemsSource="{Binding BooksList}">
<Picker.ItemdisplayBinding>
<MultiBinding StringFormat="{}{0} - {1}">
<Binding Path="Title"/>
<Binding Path="Subtitle"/>
</MultiBinding>
</Picker.ItemdisplayBinding>
</Picker>
<Button Text="Add" Command="{Binding AddCommand}"/>
<Button Text="Remove" Command="{Binding RemoveCommand}"/>
以及相应的viewmodel-
AddCommand = new Command((object item) =>
{
BooksList.Add(new ListItem
{
Title = "Book Name",Subtitle = "Author Name"
});
}
...
private ObservableCollection<ListItem> _booksList;
public ObservableCollection<ListItem> BooksList
{
get => _booksList;
set
{
_booksList = value;
OnPropertyChanged(nameof(BooksList));
}
}
...
public BookClass
{
BooksList = new ObservableCollection<ListItem>();
}
...
public class ListItem
{
public string Title { get; set; }
public string Subtitle { get; set; }
}
现在,当我运行应用程序并单击“添加”按钮时,它可以正常工作,并且可以在选择器控件中看到一个元素。但是,当我再次按下“添加”按钮时,它会引发以下异常-
对象引用未设置为对象的实例
堆栈跟踪-
{System.NullReferenceException: Object reference not set to an instance of an object.
at Xamarin.Forms.MultiBinding.Apply (System.Object context,Xamarin.Forms.BindableObject targetobject,Xamarin.Forms.BindableProperty targetProperty,System.Boolean fromBindingContextChanged) [0x0013a] in D:\a\1\s\Xamarin.Forms.Core\MultiBinding.cs:147
at Xamarin.Forms.Picker.GetdisplayMember (System.Object item) [0x00018] in D:\a\1\s\Xamarin.Forms.Core\Picker.cs:184
at Xamarin.Forms.Picker.AddItems (System.Collections.Specialized.NotifyCollectionChangedEventArgs e) [0x00032] in D:\a\1\s\Xamarin.Forms.Core\Picker.cs:252
at Xamarin.Forms.Picker.CollectionChanged (System.Object sender,System.Collections.Specialized.NotifyCollectionChangedEventArgs e) [0x00010] in D:\a\1\s\Xamarin.Forms.Core\Picker.cs:238
at System.Collections.ObjectModel.ObservableCollection`1[T].OnCollectionChanged (System.Collections.Specialized.NotifyCollectionChangedEventArgs e) [0x00018] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/src/System.ObjectModel/src/System/Collections/ObjectModel/ObservableCollection.cs:263
at System.Collections.ObjectModel.ObservableCollection`1[T].OnCollectionChanged (System.Collections.Specialized.NotifyCollectionChangedAction action,System.Object item,system.int32 index) [0x00000] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/src/System.ObjectModel/src/System/Collections/ObjectModel/ObservableCollection.cs:338
at System.Collections.ObjectModel.ObservableCollection`1[T].InsertItem (system.int32 index,T item) [0x0001a] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/src/System.ObjectModel/src/System/Collections/ObjectModel/ObservableCollection.cs:196
at System.Collections.ObjectModel.Collection`1[T].Add (T item) [0x00020] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/src/Common/src/CoreLib/System/Collections/ObjectModel/Collection.cs:71
at RS.Apps.viewmodels.BookShelf.BookShelfviewmodel.<.ctor>b__37_3 (System.Object item) [0x00018] in C:\user43424\GitHub\Booking\Mobile\Apps\viewmodels\BookShelf\BookShelfviewmodel.cs:97 }
我无法全神贯注于这里发生的事情。为什么要使用null引用异常,我还缺少什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)