WPF:在UserControl构造函数中作为参数传递的ObservableCollection的数据绑定

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

我有一个带有组合框的UserControl,我正在绑定一个ObservableCollection,比如follow。现在,集合填充在UserControl中。但是,我想在主窗口中创建ObservableCollection,并为我的UserControl创建另一个构造函数。这是我现在得到的,它正在发挥作用:

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模式,但为了完全理解它,我将阅读更多内容。