2014-03-03 124 views
0

我正在編寫一個WPF應用程序。我希望它在不同來源的ListBox中顯示數據。我想打一些常見的源接口一樣WPF組織數據模板

interface IDataSource<T> 
{ 
    ObservableCollection<T> Elements { get; set; } 
    DataTemplate ElementDataTemplate { get; set; } 
} 

但我不知道這是最好的一種或多種類型,我應該爲用戶IDataSource。我可以使它UserControl,但它似乎沒有必要,因爲我的DataSource不是用戶控制。主要問題是ElementDataTemplate。我如何才能妥善管理它不從UserControl類?我應該關心的另一個助手UserCntrol類並調用類似(new MyUserControl).FindResource("ElementsDataTemplate")獲得的DataTemplate或有更精細的方式來保持並得到DataTemplate

回答

0

您可以簡單地套用一個數據模板在相應的資源部分特定類型觀點:

<!-- Items may be of type ViewModel1 and ViewModel2 --> 
<ItemsControl ItemsSource="{Binding Items}"> 
    <ItemsControl.Resources> 
     <DataTemplate DataType="{x:Type vm:ViewModel1}"> 
      <TextBlock Text="{Binding PropertyA}" /> 
     </DataTemplate> 
     <DataTemplate DataType="{x:Type vm:ViewModel2}"> 
      <TextBlock Text="{Binding PropertyB}" /> 
     </DataTemplate> 
    </ItemsControl.Resources> 
</ItemsControl> 

所以沒有必要在接口

+0

我不知道有多少資源(的ViewModels)會出現,所以我想每個源保留的DataTemplate本身。 –