C# “相同”;“项目来源”;对于UserControl中的每个组合框

C# “相同”;“项目来源”;对于UserControl中的每个组合框,c#,xaml,C#,Xaml,我在窗口/用户控件中有几个组合框。我从父级设置ItemsSource,但只指定组合框的名称。 既然我不想对每个项都这样做(因为我不能重复combobox名称),那么如何对这个userControl中的所有同类项(在本例中为combobox)实现这一点呢 在用户控制代码后面 public object multiSwitchListDataContext { get { return multiSwitchCombobox.DataContext; } se

我在窗口/用户控件中有几个组合框。我从父级设置ItemsSource,但只指定组合框的名称。 既然我不想对每个项都这样做(因为我不能重复combobox名称),那么如何对这个userControl中的所有同类项(在本例中为combobox)实现这一点呢

在用户控制代码后面

    public object multiSwitchListDataContext {
        get { return multiSwitchCombobox.DataContext; }
        set
        {
            multiSwitchCombobox.DataContext = value; 
            multiSwitchCombobox.ItemsSource = value;
            NotifyPropertyChanged();
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
在主窗口CS中

    (myUserControl).multiSwitchListDataContext = multiSwitchList;
在usercontrolxaml中

    <dxe:ComboBoxEdit Name="multiSwitchCombobox"
                      Grid.Row="1"
                      Grid.Column="1"
                      EditValueChanged="EditValueChanged"/>

我无法为您当前的问题提供完整的答案,因为没有足够的信息/代码提供答案,但下面的示例有望帮助您对其进行排序

MainWindow.xaml

<ComboBox ItemsSource="{Binding MyList}"/>

MainWindow.xaml.cs

public MainWindow()
{
    InitializeComponent();

    // Very important to get the binding working.
    this.DataContext = this;
}

// The property to bind to, you should choose a better type than object.
public IList<object> MyList
{
    get { return (IList<object>)GetValue(MyListProperty); }
    set { SetValue(MyListProperty, value); }
}

public static readonly DependencyProperty MyListProperty =
        DependencyProperty.Register("MyList", typeof(IList<object>), typeof(MainWindow), new PropertyMetadata(null));
public主窗口()
{
初始化组件();
//使装订工作正常非常重要。
this.DataContext=this;
}
//要绑定到的属性,应选择比对象更好的类型。
公共图书馆
{
获取{return(IList)GetValue(MyListProperty);}
set{SetValue(MyListProperty,value);}
}
公共静态只读DependencyProperty MyListProperty=
DependencyProperty.Register(“MyList”、typeof(IList)、typeof(MainWindow)、new PropertyMetadata(null));

然后,通过在代码中设置MyList属性,可以发现它将用MyList中的值填充组合框。

您可以循环父控件中的所有控件,然后检查类型是否为组合框,然后设置源。您不需要知道控件的名称,这就是
Binding
s的设计目的。您可以发布一些代码来显示您尝试过的内容吗?什么是multiSwitchList?主窗口cs中的一个列表,我的组合框从中读取值感谢您的帮助,问题是因为我在UserControl中有这个组合框,主窗口中的对象列表…@Carlosss这仍然是完全可能的,但它只是变得更加复杂。您需要在UserControl上公开一个属性,如ItemsSource,该属性可以绑定到MainWindow.xaml文件中,这样就可以满足您的需要。很抱歉,我仍然没有得到它。在userControl中对其所有组合框进行绑定,但需要绑定到这些组合框的列表存在于主窗口中。cs@carloss您的UserControl是否比控制组合框做得更多?i、 它是否呈现其他控件,如果没有,则您可以从CombBox继承,然后可以绑定到MainWindow.xaml中的ItemsSource属性