2016-07-27 5 views
-1

Hallo Ich entwickle eine UWP App, die wie Messenger ist und ich möchte, dass der Benutzer sich anmeldet und dann die Nachrichten in die Datenbank einfügt. Was ich brauche ist: Ich möchte verschiedene DataTemplate für die Nachrichten anzeigen, die der Benutzer sendet und die Nachrichten, die andere Benutzer senden. Ich weiß nicht, wie das zu implementieren ist.Wie zeigt man verschiedene DataTemplate für die Nachricht aus der Cloud basierend auf der ID an?

Antwort

0

Sie können dazu DataTemplateSelector verwenden.

  1. Definieren Sie Ihre individuelle Datatemplateselector Klasse:

    public class MyTemplateSelector: DataTemplateSelector 
    { 
        public DataTemplate VIPTemplate { get; set; }//DataTemplate for special user 
        public DataTemplate CustomerTemplate { get; set; }//DataTemplate for normal user 
        protected override DataTemplate SelectTemplateCore(object item) 
        { 
         if (((Customer)item).Id.ToLower() == "vipcustomer") 
         { 
          //if current user is vip then user VIP Template. 
          return VIPTemplate; 
         } 
         else 
         { 
          //otherwise return normal template. 
          return CustomerTemplate; 
         } 
        } 
    } 
    
  2. In zwei verschiedenen Vorlagen und die Datatemplateselector auf Ihrer Seite Ressourcen und vergessen Sie nicht zuerst den Namensraum zu verwenden Sie können die folgenden Schritte durchführen:

    <Page 
        ... 
        xmlns:selector="using:DataTemplateSelectorSample.TemplateSelectors" 
        ... 
    > 
    
    <Page.Resources> 
        <DataTemplate x:Key="VipTemplate"> 
         <StackPanel Background="Green" Width="500" Height="25"> 
          <TextBlock Text="{Binding Name}"></TextBlock> 
         </StackPanel> 
        </DataTemplate> 
        <DataTemplate x:Key="CustomerTemplate"> 
         <StackPanel Width="500" Height="25"> 
          <TextBlock Text="{Binding Name}"></TextBlock> 
         </StackPanel> 
        </DataTemplate> 
        <selector:MyTemplateSelector x:Key="userTemplateSelector" CustomerTemplate="{StaticResource ResourceKey=CustomerTemplate}" VIPTemplate="{StaticResource ResourceKey=VipTemplate}"/> 
    </Page.Resources> 
    
  3. Ihren eigenen Selektor in Itemscontrol verwenden:

    <ListView Name="myListView" ItemTemplateSelector="{StaticResource userTemplateSelector}"></ListView> 
    

Jetzt kann jeder Benutzer, der die ID von "vipcustomer" hat einen grünen Hintergrund haben.

Das vollständige Muster finden Sie unter diesem Link: DataTemplateSelectorSample