【问题标题】:How to bind ObservableCollection to IList property in XAML?如何将 ObservableCollection 绑定到 XAML 中的 IList 属性?
【发布时间】:2019-04-16 09:36:12
【问题描述】:

我有 IList 属性来获取我的 DropDown 列表的 ItemSource。如何将 ObservabelCollection 绑定到视图(XAML)中的 IList 属性?我尝试了普通绑定,但它抛出了空引用异常。

注意:我可以在后面的代码中绑定集合。只有当我尝试通过 Xaml 绑定它时,我才会遇到异常。

我尝试了 ObservableCollection、IList 和 IEnemerable 类型的集合

IList 属性

    public IList ItemsSource
    {
        get { return this.itemsSource; }
        set { this.itemsSource = value; }
    }

收藏

    public IList<Address> AddressSource
    {
        get { return this.address; }
        set { this.address = value; }
    } 

Xaml 视图

<DataForm Editor="DropDown" ItemsSource="{Binding AddressSource}" Name="Country"/>

【问题讨论】:

  • 您可以将代码添加到您的帖子中吗?
  • 发布一些代码。 ObservableCollection 间接实现 IList 然后将 ObservableCollection 绑定到等待 IList 的属性没有问题。问题应该出在其他地方
  • 一个ObservableCollection派生自IList接口,应该可以工作,其次空引用异常与此无关
  • 我已经更新了代码,请任何人给我一个解决方案。
  • 你能添加足够的代码来重现问题吗?你的型号?您的内容页面?

标签: c# xaml mvvm xamarin.forms


【解决方案1】:

不是你无法绑定而是找不到属性。如果将 BindingContext 设置为适当的级别,请检查它,并且邮政编码真的很有帮助

【讨论】:

    【解决方案2】:

    要向您的应用程序添加 Binding 功能,您可以通过在 Xaml 页面的构造函数中添加 Loaded 事件来使用技巧,在此事件中,您需要在下面添加相同的代码OnLoaded 事件。

    public MainPage()
    {
        this.InitializeComponent();
        this.Loaded += OnLoaded;
    }
    
    private void OnLoaded(object sender, RoutedEventArgs e)
    {
        this.DataContext = this;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 2012-10-03
      • 1970-01-01
      相关资源
      最近更新 更多