WPF:在UserControl构造函数中作为参数传递的ObservableCollection的数据绑定
我有一个带有组合框的UserControl,我正在绑定一个ObservableCollection,比如follow。现在,集合填充在UserControl中。但是,我想在主窗口中创建ObservableCollection,并为我的UserControl创建另一个构造函数。这是我现在得到的,它正在发挥作用:WPF:在UserControl构造函数中作为参数传递的ObservableCollection的数据绑定,wpf,binding,constructor,user-controls,Wpf,Binding,Constructor,User Controls,我有一个带有组合框的UserControl,我正在绑定一个ObservableCollection,比如follow。现在,集合填充在UserControl中。但是,我想在主窗口中创建ObservableCollection,并为我的UserControl创建另一个构造函数。这是我现在得到的,它正在发挥作用: publicobservableCollection项{get;private set;} 公共CustomComboBox() { 初始化组件(); Items=新的Observable
publicobservableCollection项{get;private set;}
公共CustomComboBox()
{
初始化组件();
Items=新的ObservableCollection();
cmb.ItemsSource=项目;
if(!System.ComponentModel.DesignerProperties.GetIsInDesignMode(此))
{
this.createNameComboBox();//ObservatoryCollection填充
}
}
我尝试实现第二个构造函数并在主窗口中移动集合填充函数,但我得到一个错误,即UserControl中的comboBox未设置为对象的实例。理想情况下,我想要这样的东西:
public CustomComboBox(可观察的收集项)
{
this.Items=Items
//不确定是在这里还是在默认构造函数中进行绑定
}
你知道怎么做吗?谢谢您的解决方案应该包括一个将被设置为用户控件的 此ViewModel应包含ObservaleCollection并将其公开为公共属性,理想情况下,它应使用注入的服务提供商从某个数据存储中获取数据,并使用该数据填充ObservaleCollection,最后,用户控件的组合框应绑定到ViewModel中的该ObservaleCollection 您的用户控制代码背后应该没有代码,只有一些事件处理程序可以在必要时操纵UI以响应UI事件 这就是如何在WPF中利用MVVM模式正确地完成事情 下面是如何将服务注入VM构造函数并用于使用某些数据填充集合的示例:
public class MainWindowViewModel
{
private ICustomerService _customerService;
public MainWindowViewModel(ICustomerService customerService)
{
_customerService = customerService;
Customers = new ListCollectionView(customerService.Customers);
}
public ICollectionView Customers { get; private set; }
}
我试图避免使用MVVM模式,但为了完全理解它,我将阅读更多内容。