2011-08-17 29 views
1

我正在使用WPF。在我的窗口中有一个数据网格,它与可观察的集合绑定。此集合包含有关房间退房的数据。因此,还有一个窗口必须将服务收集添加到数据网格>>用服务名称创建具有价格的填充单元的新集合。需要简单的帮助来开发c#算法

此价格必须在行上设置,其中id(column) == "example"。我认为这一定很容易,但我试着这2天..所以我的问题:是否有可能绑定数据网格与两个集合?

如何添加集合新属性?像这样:public string ServiceName{get;set;}从另一个窗口。

请指点一些好的事情怎么解决这个问题

+0

为什么需要添加ServiceName作为集合的属性?为什么不直接将其绑定到TextBox?顺便说一句,你使用MVVM或你的模型类在代码后面的视图? – sll

回答

7

要绑定到多个集合,请使用CompositeCollection。

这里有一个列表框例如:

<ListBox Name="myListBox" Height="300" Width="200" Background="White"> 
    <ListBox.ItemsSource> 
    <CompositeCollection> 
     <CollectionContainer 
     Collection="{Binding Source={StaticResource GreekGodsData}}" /> 
     <CollectionContainer 
     Collection="{Binding Source={StaticResource GreekHeroesData}}" /> 
     <ListBoxItem Foreground="Red">Other Listbox Item 1</ListBoxItem> 
     <ListBoxItem Foreground="Red">Other Listbox Item 2</ListBoxItem> 
    </CompositeCollection> 
    </ListBox.ItemsSource> 
</ListBox> 

这个例子和更多信息可以在MSDN上找到:http://msdn.microsoft.com/en-us/library/system.windows.data.compositecollection.aspx

另一个重要的一点要提的是CompositeCollection 没有实现IEditableCollectionView所以如果你需要编辑的DataGrid,你不能没有实施IEditableCollectionView自己使用CompositeCollection。

+0

酷 - 不知道这是可能的 – AdamC

+0

今天学到了一些新东西 - thx! –

+0

从来不知道! WPF让我感到惊喜! – ioWint

0

不,你不能在同一时间属性,以两件事情结合。 通常你会将两个数据对象聚合成一个Helperobject并使用observable-collection中的数据对象。

+0

您可以使用CompositeCollection进行绑定。我在一个月前尝试为菜单创建集合时发现了这一点。看到我上面的答案。 – Josh

+0

好的谢谢 - 我想我必须做更多的“知道你的框架”;) – Carsten

+0

祝你好运与WPF。我发誓我每天都会看到新的东西。 – Josh