如何将ItemsSource绑定到私有属性

如何将WPF和ItemsSource绑定到私有属性?

  
 public partial class ItemBuySellAddEdit : BasePage { private List Items { get; set; } } 

表单加载时将填充项目列表。

WPF中的DataBinding仅适用于公共属性。

MSDN :

用作绑定的绑定源属性的属性必须是类的公共属性。 无法为绑定目的访问明确定义的接口属性,也没有基本实现的受保护,私有,内部或虚拟属性

如果你真的想要这样做,你必须提供一个自定义类型描述符,通过实现ICustomTypeDescriptor – 它通过自定义PropertyDescriptor提供额外的属性,与常规公共属性一起提供。 您可以在类型本身上实现此接口,也可以通过TypeDescriptionProvider ; 后者是首选,因为它适用于更多场景(诸如空列表之类的东西,而不需要提供具有ITypedList实现的自定义列表)。 这是很多工作,除非在极端情况下,它确实不值得。 但这是可以完成的。

这是不可能的,如果你愿意,你可以使用internal代替。

…并使用ObservableCollection并且不要忘记设置视图的DataContext。

你需要一个相对源绑定,现在你的绑定是你的ItemBuySellAddEdit (FrameworkElement) ItemBuySellAddEdit的DataContext,这是我的Impression,因为你使用的是partial 。 如果是ViewModel,请检查输出窗口,看看是否有任何绑定错误。

  

但Stephan Bauer的答案仍然适用。

如果您希望该列表中的新项目自动显示,请考虑WaltiD的答案。