2014-07-01 76 views
0

我有具有不同特性的兩個對象,數據綁定與相同的用戶控制兩個不同對象WPF

例如

class foo 
{ 
    int age; 
    string name; 
} 

class bar 
{ 
    string kind; 
    int length; 
} 

我有,可以很容易一類結合其行和列,但一個gridview用戶控件我不想爲第二個類創建另一個用戶控件,而是使用相同的控件來顯示數據,我如何在WPF數據綁定中執行此操作?

我想你並沒有發佈代碼示例,只是指向我的方向,我已經看過數據模板,但他們似乎希望屬性綁定到,在這種情況下,我有兩個不同的對象。

問候

回答

2

這不是UserControl,也不在那裏你定義的數據項將是什麼樣子,所以你可以很容易地在一個UserControl顯示來自不同類別的項目GridView。相反,你如何定義每個類應該通過聲明DataTemplate s內呈現:

<DataTemplate DataType="{x:Type YourPrefix:foo}"> 
    <StackPanel> 
     <TextBlock Grid.Row="0" Text="{Binding age}" /> 
     <TextBlock Grid.Row="1" Text="{Binding name}" /> 
    </StackPanel> 
</DataTemplate> 
<DataTemplate DataType="{x:Type YourPrefix:bar}"> 
    <StackPanel> 
     <TextBlock Grid.Row="0" Text="{Binding kind}" /> 
     <TextBlock Grid.Row="1" Text="{Binding length}" /> 
    </StackPanel> 
</DataTemplate> 

當然,你需要使用object類型的集合,如果你希望能夠把不同類型的對象在它:

public ObservableCollection<object> Items { get; set; } 

...

Items = GetFoos(); 
// Or Items = GetBars(); 

...

<ListBox ItemsSource="{Binding Items}" /> 

閱讀MSDN上的Data Templating Overview頁面可以幫助您更好地理解這一點。不過,我不會推薦這種方法,因爲您不斷需要將對象轉換回適當的類型。對於正在顯示或編輯的每種數據類型,您最好宣佈不同的UserControl

相關問題