Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何在每个ListBoxItem文本块中显示绑定到不同表的filelds的文本块_Wpf_Data Binding_Listboxitem - Fatal编程技术网

Wpf 如何在每个ListBoxItem文本块中显示绑定到不同表的filelds的文本块

Wpf 如何在每个ListBoxItem文本块中显示绑定到不同表的filelds的文本块,wpf,data-binding,listboxitem,Wpf,Data Binding,Listboxitem,大家好,对不起我的英语! 我有一个列表框,它是ItemsSource=myClientsList.DefaultView。ListBox的项具有一个模板(ControlTemplate),该模板在单独的资源文件中的中定义。 每个项目都包含一个小TextBlock,每个项目的Text-property都绑定到我的对象myClientsList的字段 我需要在这个项目模板中添加更多TexBlock,并且每个TexBlock必须绑定到另一个my类myOrdersList的字段。-(因此,我希望查看数据

大家好,对不起我的英语! 我有一个列表框,它是ItemsSource=myClientsList.DefaultView。ListBox的项具有一个模板(ControlTemplate),该模板在单独的资源文件中的中定义。 每个项目都包含一个小TextBlock,每个项目的Text-property都绑定到我的对象myClientsList的字段

我需要在这个项目模板中添加更多TexBlock,并且每个TexBlock必须绑定到另一个my类myOrdersList的字段。-(因此,我希望查看数据库不同表中的每一行列表框信息-这是一个问题)

问题在于ListBox的ItemsSource有一个指向对象myClientsList的链接,而我无法将myOrderList设置为同一ListBox的ItemSource。所以我必须找到一种在ControlTemplate中指定TextBlock.DataContext的方法,或者如何用另一种方法解决这个问题


p、 我是.Net和WPF的新手,可能在我的解释中有错误,对此我深表歉意

如果我理解了这个问题,这里有两个问题:如何创建包含客户机和订单的单个集合,以及如何在同一个列表框中以不同方式显示客户机和订单

关于第一个,您可以使用CompositeCollection来实现这一点

关于第二个,定义两个DataTemplates,而不是一个ControlTemplate。作为每个数据模板的键,使用它将要呈现的对象的类型,例如

<DataTemplate x:Key="{x:Type local:Client}">


或者,根据项的类型,使用ItemsControl.ItemTemplateSelector显式指向不同的DataTemplates。Ot如果您真的必须使用ControlTemplates,请查看ItemsControl.ItemContainerStyleSelector。

如果我理解了这个问题,这里有两个问题:如何创建包含客户端和订单的单个集合,以及如何在同一列表框中以不同方式显示客户端和订单

关于第一个,您可以使用CompositeCollection来实现这一点

关于第二个,定义两个DataTemplates,而不是一个ControlTemplate。作为每个数据模板的键,使用它将要呈现的对象的类型,例如

<DataTemplate x:Key="{x:Type local:Client}">


或者,根据项的类型,使用ItemsControl.ItemTemplateSelector显式指向不同的DataTemplates。Ot如果您真的必须使用ControlTemplates,请查看ItemsControl.ItemContainerStyleSelector。

听起来您有一个DataGrid类型的显示,并希望添加更多列以显示给定客户端的订单信息。如果是这样,你将不得不做几件事。首先,需要创建一个复合对象,将两个实体的信息存储到单个对象中(这样控件的每一行都有需要显示的所有数据)。其次,我建议使用实际的DataGrid控件来显示行,而不是模板化ListBoxItem。框架中内置GridView的ListView不太好,因此我建议您提供免费选项。

听起来您有一个DataGrid类型的显示,希望添加更多列,以便显示给定客户端的订单信息。如果是这样,你将不得不做几件事。首先,需要创建一个复合对象,将两个实体的信息存储到单个对象中(这样控件的每一行都有需要显示的所有数据)。其次,我建议使用实际的DataGrid控件来显示行,而不是模板化ListBoxItem。框架中内置GridView的ListView不太好,因此我建议您免费使用。

谢谢您,Abe。我将尝试使用WPFToolkit的数据网格作为变量谢谢你,Abe。我将尝试使用WPFToolkit的DataGrid作为变量,它有两个ObservableCollection对象—myClientsList和myOrdersList。ListBox可以很好地处理第一个,但我需要向每个ListBoxItem添加第二个集合中的一些数据字段。据我所知,我不能使用ItemTemplateSelector——因为它是一个“选择器”,这种方式不会得到我想要的结果。我将尝试使用CompositeCollection(我不知道这个对象的存在)。谢谢你的评论。我有两个可观察的收集对象-myClientsList和myOrdersList。ListBox可以很好地处理第一个,但我需要向每个ListBoxItem添加第二个集合中的一些数据字段。据我所知,我不能使用ItemTemplateSelector——因为它是一个“选择器”,这种方式不会得到我想要的结果。我将尝试使用CompositeCollection(我不知道这个对象的存在)。谢谢你的评论。