2010-07-24 52 views
0

我想將視圖中的列表控件(如ListView)綁定到視圖模型中的集合。該集合由任意數量的視圖模型組成,這些視圖模型也具有與其綁定的視圖。綁定到列表控件並查找視圖

儘管集合中的每個視圖模型都將從一個公共基類型派生,但它們的派生類型是不同的(它們的視圖類型也是如此)。例如,列表中的一個項目可能有一個包含文本框和兩個按鈕的視圖,而另一個項目包含複選框和組合列表。

但是,列表控件在設計時將不知道其項目的視圖類型(或項目數量)。我如何讓主視圖和/或列表控件在主視圖模型集合中使用派生類型來查找相應的項目視圖並將其綁定?

回答

3

你只需要在每個視圖模型類型的資源提供適當的DataTemplates:

<DataTemplate DataType="{x:Type vm:FooViewModel}"> 
    <v:FooView /> 
</DataTemplate> 

<DataTemplate DataType="{x:Type vm:BarViewModel}"> 
    <v:BarView /> 
</DataTemplate> 

<DataTemplate DataType="{x:Type vm:BazViewModel}"> 
    <v:BazView /> 
</DataTemplate> 

注意,沒有對這些資源沒有x:Key屬性:這樣一來,WPF挑選合適的模板自動根據類型的ViewModel

+0

很好用 - 謝謝! – 2010-07-24 01:15:33