0

我是 WPF 的新手。

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

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

我做了研究,但不知道如何轻松做到这一点。我尝试创建一个存储过程以根据给定的类别选择所需的类型值列表,但不知道如何将所选类别传递给 XAML 中的存储过程。我必须使用代码而不是 XAML 来执行此操作吗?你的建议是什么?

非常感谢

4

2 回答 2

2

我会创建一个对象来保存您的类别,其中包含该类别可能的每种类型。就像是...

public class Category
{
    public ObservableCollection<string> Types { 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;
    }
}

最后,您可以将第一个组合框绑定到类别列表,将第二个组合框绑定到另一个组合框的所选项目的类型列表。

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

<ComboBox ItemsSource = "{Binding ElementName=cboCategory, Path=SelectedItem.Types}" />
于 2012-06-04T14:07:49.647 回答
0

问题是,每当我们显示这种类型的数据时,我们通常会首先获取数据,然后准备我们需要的对象,然后将它绑定到 wpf 控件。

现在首先您已经绑定到组合框,因此您需要根据 selecteditem 填充另一个下拉列表并将其绑定到第一个或类别列表的 SelectionChanged 上,您也可以使用属性更改事件。

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

于 2012-06-04T14:06:47.537 回答