2016-03-05 33 views
4

我想在App.XAML中定義Datatemplate,然後將其共享給我需要使用此項目模板的任何頁面。我不知道該怎麼辦UWP如何在App.XAML中定義DataTemplate

+0

如何在普通頁面中執行此操作,可以顯示一些代碼嗎?你有沒有試圖在* Application.Resources *中提到的文件中做到這一點? – Romasz

回答

10

這取決於您想要使用的綁定類型。

如果您使用標準XAML結合,一切都是一樣WPF:

  1. 定義模板Application.Resources

    <Application.Resources> 
        <DataTemplate x:Key="Template1"> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding Prop1}" /> 
          <TextBox Text="{Binding Prop2}" /> 
         </StackPanel> 
        </DataTemplate> 
    </Application.Resources> 
    
  2. 參考模板頁面:

    <ListView ItemsSource="{Binding Items}" ItemTemplate="{StaticResource Template1}" /> 
    

如果您使用編譯{x:bind}結合,你需要在一個單獨的資源字典背後在生成的代碼將最終代碼來定義模板:

  1. 創建一個新的部分對於資源Dictionary類:

    public partial class DataTemplates 
    { 
        public DataTemplates() 
        { 
         InitializeComponent(); 
        } 
    } 
    
  2. 創建基於與數據模板這部分類資源字典:

    <ResourceDictionary 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:local="using:MyNamespace" 
        x:Class="MyNamespace.DataTemplates"> 
    
        <DataTemplate x:Key="Template2" x:DataType="local:MyClass"> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{x:Bind Prop1}" /> 
          <TextBox Text="{x:Bind Prop2}" /> 
         </StackPanel> 
        </DataTemplate> 
    </ResourceDictionary> 
    
  3. 合併資源字典爲Application.Resources

    <Application.Resources> 
        <ResourceDictionary> 
         <ResourceDictionary.MergedDictionaries> 
          <local:DataTemplates/> 
         </ResourceDictionary.MergedDictionaries> 
        </ResourceDictionary> 
    </Application.Resources> 
    
  4. 最後使用的模板頁面:

    <ListView ItemsSource="{Binding Items}" ItemTemplate="{StaticResource Template2}" /> 
    

您可以檢查Igor's blog post瞭解更多詳情。自發布後的預覽以來,沒有任何重大變化。

+0

非常感謝+1 –

相關問題