我遇到了如何以最佳方式綁定我的數據網格的問題。在Silverlight中綁定具有兩個數據源的網格
問題是,我想使用兩個itemSources。 我有一個包含大量事件的列表,每個事件都包含一個buggs列表。 我想要做的是綁定一半gridview行與事件中的一些字段,以及一半的網格與事件持有的相應錯誤。
我怎麼能夠以最好的方式做到這一點?
我有權訪問componentOne數據網格,但如果正常的網格起作用,那就很好。
但我確實想要有排序能力。
謝謝
我遇到了如何以最佳方式綁定我的數據網格的問題。在Silverlight中綁定具有兩個數據源的網格
問題是,我想使用兩個itemSources。 我有一個包含大量事件的列表,每個事件都包含一個buggs列表。 我想要做的是綁定一半gridview行與事件中的一些字段,以及一半的網格與事件持有的相應錯誤。
我怎麼能夠以最好的方式做到這一點?
我有權訪問componentOne數據網格,但如果正常的網格起作用,那就很好。
但我確實想要有排序能力。
謝謝
聽起來像是你只是想確保你沒有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" />
我同意Kavet的想法,但他的解決辦法是遠那麼現實。 根據http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemssource(v=vs.95).aspx
ItemSourse必須實現IEnumerable接口。
這意味着你的ItemWrapper根本無法工作。
你試過這個嗎?
嘿,謝謝你的輸入,但是這個ItemSourceWrapper是怎麼樣的,請在後面添加一些代碼,這樣我就可以看到我應該如何將兩個源代碼添加到包裝中了。謝謝 – Fore 2010-11-19 18:38:11
哦,對不起,出。如果你不自動生成列,我不認爲你需要有一個ItemSource。編輯以反映這一點。 – 2010-11-19 19:32:41
另一個選項雖然會做一個簡單的包裝,它有兩個屬性設置爲您的兩個項目源的每種類型。然後,您可以將項目源設置爲該包裝器,並使用相同的點符號引用包裝器中的每個項目源 – 2010-11-19 19:33:56