C# 将此数据库内容绑定到WPF控件的最简单方法是什么?

C# 将此数据库内容绑定到WPF控件的最简单方法是什么?,c#,wpf,data-binding,C#,Wpf,Data Binding,我是WPF的新手 我有一个数据库表,有两列:Category,Type。主键组合为(类别、类型)。类型从属于类别,即1个类别包含多个类型 现在,在我的WPF UI中,我有两个组合框控件。第一个绑定到DB表中的不同类别列表。我通过将控件绑定到distinct(Category)的DB视图来实现这一点。第二个控件需要显示属于第一个控件中当前选择的类别的类型列表 我做过研究,但不知道如何轻松地做。我尝试创建一个存储过程来根据给定的类别选择想要的类型值列表,但不知道如何将所选类别传递给XAML中的存储过

我是WPF的新手

我有一个数据库表,有两列:Category,Type。主键组合为(类别、类型)。类型从属于类别,即1个类别包含多个类型

现在,在我的WPF UI中,我有两个组合框控件。第一个绑定到DB表中的不同类别列表。我通过将控件绑定到distinct(Category)的DB视图来实现这一点。第二个控件需要显示属于第一个控件中当前选择的类别的类型列表

我做过研究,但不知道如何轻松地做。我尝试创建一个存储过程来根据给定的类别选择想要的类型值列表,但不知道如何将所选类别传递给XAML中的存储过程。我必须使用代码而不是XAML来完成吗?你有什么建议


非常感谢

问题是,每当我们显示此类数据时,通常我们会首先获取数据,然后准备我们需要的对象,然后再绑定wpf控件

现在,首先您已经绑定到combobox,因此在selecteditem的基础上,您需要填充另一个下拉列表并绑定它。在SelectionChanged of first或Category list上,您还可以使用property change event


注意:如果数据很大,那么我们将使用CTE或分页之类的东西来获取数据。

我将创建一个对象来保存类别,其中包含该类别可能包含的每种类型。类似于

public class Category
{
    public ObservableCollection<string> Types { get; set; }
}
公共类类别
{
公共ObservableCollection类型{get;set;}
}
然后,当您初始化每个类别时,您可以设置在

public class MyClass
{
    public ObservableCollection<Category> Categories { get; set; }
    public MyClass()
    {
         InitializeComponent();
         ObservableCollection MyTypes = new ObservableCollection();
         MyTypes.Add("type1");
         MyTypes.Add("type2");
         MyTypes.Add("Type3");
         Categories.Add(new Category() { Types = MyTypes });
         //Probably a more elegant way to do this, but hard to say based on information given

         this.DataContext = this;
    }
}
公共类MyClass
{
公共ObservableCollection类别{get;set;}
公共MyClass()
{
初始化组件();
ObservableCollection MyTypes=新的ObservableCollection();
MyTypes.添加(“type1”);
MyTypes.添加(“type2”);
MyTypes.添加(“Type3”);
添加(新的Category(){Types=MyTypes});
//这可能是一种更优雅的方式,但根据提供的信息很难说
this.DataContext=this;
}
}
最后,您可以将第一个组合框绑定到类别列表,第二个绑定到另一个组合框的选定项的类型列表

<ComboBox Name="cboCategory" ItemsSource = "{Binding Categories}" />

<ComboBox ItemsSource = "{Binding ElementName=cboCategory, Path=SelectedItem.Types}" />

谢谢。我想,我试图实现的是数据绑定有点过度。我会用你的方法。