2010-11-19 68 views
0

我遇到了如何以最佳方式綁定我的數據網格的問題。在Silverlight中綁定具有兩個數據源的網格

問題是,我想使用兩個itemSources。 我有一個包含大量事件的列表,每個事件都包含一個buggs列表。 我想要做的是綁定一半gridview行與事件中的一些字段,以及一半的網格與事件持有的相應錯誤。

我怎麼能夠以最好的方式做到這一點?

我有權訪問componentOne數據網格,但如果正常的網格起作用,那就很好。

但我確實想要有排序能力。

謝謝

回答

0

聽起來像是你只是想確保你沒有AutoGenerateColumns="True"

<sdk:DataGrid AutoGenerateColumns="False">  
     <sdk:DataGrid.Columns> 
      <sdk:DataGridTextColumn 
       Header="ItemSource1Property1Name" 
       Width="SizeToHeader" 
       Binding="{Binding ItemSource1.Property1}" 
       FontSize="20" /> 
      <sdk:DataGridTextColumn 
       Header="ItemSource1Property2Name" 
       Width="SizeToHeader" 
       Binding="{Binding ItemSource1.Property2}" 
       FontSize="20" /> 
      <sdk:DataGridTextColumn 
       Header="ItemSource2Property1Name" 
       Width="SizeToCells" 
       Binding="{Binding ItemSource2.Property1}" 
       FontSize="20" /> 
     </sdk:DataGrid.Columns> 
     . 
     . 
     . 
     Rest of Code 
     . 
     . 
     . 
</sdk:DataGrid> 

編輯

如果您選擇使用的包裝爲您的項目源,那麼你將在你的代碼是這樣的:

public class ItemWrapper 
{ 
    ObservableCollection<ItemSource1Type> ItemSource1 {get;set;} 
    ObservableCollection<ItemSource2Type> ItemSource2 {get;set;} 
} 

,然後在視圖模型或後面的代碼(您想要設置要綁定到的屬性的位置):

public class ViewModel //This may just end up being your code behind depending on how you have your entire SL project set up. 
{ 
    ItemWrapper ItemWrapper { get; set; } //set the two properties either in the constructor or in whatever code initializes ViewModel. 
} 

在您的XAML:

<sdk:DataGrid AutoGenerateColumns="False" 
       ItemSource="{Binding ItemWrapper}" 
       DataContext="{Binding}">  
     <sdk:DataGrid.Columns> 
      <sdk:DataGridTextColumn 
       Header="ItemSource1Property1Name" 
       Width="SizeToHeader" 
       Binding="{Binding ItemSource1.Property1}" 
       FontSize="20" /> 
+0

嘿,謝謝你的輸入,但是這個ItemSourceWrapper是怎麼樣的,請在後面添加一些代碼,這樣我就可以看到我應該如何將兩個源代碼添加到包裝中了。謝謝 – Fore 2010-11-19 18:38:11

+0

哦,對不起,出。如果你不自動生成列,我不認爲你需要有一個ItemSource。編輯以反映這一點。 – 2010-11-19 19:32:41

+0

另一個選項雖然會做一個簡單的包裝,它有兩個屬性設置爲您的兩個項目源的每種類型。然後,您可以將項目源設置爲該包裝器,並使用相同的點符號引用包裝器中的每個項目源 – 2010-11-19 19:33:56

相關問題