我有一個簡單的類Product和一個名爲ProductSummaryControl的UserControl。 ProductSummaryControl顯示傳入其DataContext的Product類的詳細信息。我已經驗證了這一點,當我手動設置控件及其屬性時工作。ListBox.ItemTemplate中的數據綁定UserControl
我嘗試將ProductSummaryControl用作ListBox ItemTemplate的一部分時遇到問題。這是相關代碼:
<ListBox x:Name="ProductsList" HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<local:ProductSummaryControl DataContext="{Binding}" HorizontalAlignment="Stretch"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我設置列表框的ItemsSource到一個列表,我看到對應的產品在列表中的號碼我ProductSummaryControl的多個實例,但控件沒有正確綁定到數據。所有我發現在網絡上定製的ItemTemplate的例子表明,{結合}是獲得該項目價值的正確方法,但我似乎失去了一些東西......
UPDATE:
我做了更多的研究,我發現ProductSummaryControl的DataContext被設置爲Product()的默認實例。我想這是因爲這一點:
<UserControl.Resources>
<DBSchmid_Data:Product x:Key="ProductDataSource" d:IsDataSource="True"/>
</UserControl.Resources>
<UserControl.DataContext>
<Binding Mode="OneWay" Source="{StaticResource ProductDataSource}"/>
</UserControl.DataContext>
這是通過混合設置UserControl的DataContext的,這樣在控制各種元素可以引用繼承的DataContext的特性造成的。我證實我可以通過按鈕單擊方法更改DataContext的值,並使綁定正常工作,所以我認爲它也可以通過模板進行綁定。顯然這兩起案件的處理方式不同,但我仍不明白。
這對我有用。你能描述它是怎麼出錯的嗎?當您在調試器下運行時,您是否在「輸出」窗口中看到任何綁定錯誤? – itowlson 2009-11-08 20:54:29