2013-03-21 64 views
2

我有三個名爲UC的UserControls。它們都是相同的,只是它們在佈局中使用的DataGrid需要不同的DynamicResource。基本上是:具有不同內部數據網格的WPF UserControls ItemSource屬性

<DataGrid ... 
ItemsSource="{DynamicResource Model1}"> <!-- I want to pass in this "Model1" string? --> 

... 
</DataGrid> 

<DataGrid ... 
ItemsSource="{DynamicResource Model2}"> 

... 
</DataGrid> 

<DataGrid ... 
ItemsSource="{DynamicResource Model3}"> 

... 
</DataGrid> 

我所有的用戶控件的窗口內創建:

<Window ...> 

<my:UC/> 
<my:UC/> 
<my:UC/> 

</Window> 

至於現在我的三個UC的在DataGrid中顯示的相同數據引起dynamicresource是在所有三個相同,如何將值傳遞給每個用戶控件以更改其中的動態資源?或者,我應該如何處理,我一天前開始做WPF。

感謝

+0

結合貴'UserControl'包含任何其他數據綁定?如果沒有,你可以通過DataContext(''),並綁定' – Rachel 2013-03-21 16:13:14

+0

謝謝對於這篇技巧,我不知道是否會有更多的數據綁定,所以我寧願使用SnowFather的解決方案。 – 2013-03-21 22:52:16

回答

1

創建用戶控件的依賴屬性,它會保持ItemsSource值(DependencyProperty.Register)。在您的控制中將DataGrid綁定到此屬性。然後,從動態資源設置在窗口此屬性:

<Window ...> 
    <my:UC DataGridItemsSource="{DynamicResource Model1}" /> 
    <my:UC DataGridItemsSource="{DynamicResource Model2}" /> 
    <my:UC DataGridItemsSource="{DynamicResource Model3}" /> 
</Window> 

爲了綁定在你的控制DataGrid.ItemsSource您可以使用與ElementName=parentName結合或與RelativeSource=FindAncestor

+0

我從來沒有寫過依賴屬性,我已經讀過它們,它應該是string類型的嗎? XAML拋出一個異常,關於我的構造函數是錯誤的,因爲它與綁定屬性不匹配。 – 2013-03-21 16:36:34

+1

我明白了,DP的類型顯然是IEnumerable,因爲屬性是一個集合。在正確的軌道上,不知道最初搜索什麼關鍵字。 – 2013-03-21 22:51:20

相關問題