2016-11-13 8 views
0

Ich versuche, eine Klasse an eine Vorlage zu binden.Kann DataType nicht lösen MyApp.Model.Paper

<UserControl 
    x:Class="MyApp.Controls.PaperSelectControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:MyApp.Controls" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    d:DesignHeight="300" 
    d:DesignWidth="400"> 

    <Grid> 
     <ScrollViewer> 
      <GridView x:Name="paperGrid" 
         ItemsSource="{x:Bind Papers}" 
         Width="400" Height="300" > 
       <GridView.ItemTemplate > 
        <DataTemplate x:DataType="MyApp.Model.Paper" > 
         <TextBlock Text="{x:Bind Color}"/> 
        </DataTemplate> 
       </GridView.ItemTemplate> 
      </GridView> 
     </ScrollViewer> 
    </Grid> 
</UserControl> 

Die MyApp.Model.Paper ist der Klassennamespace.

namespace MyApp.Model { 
    public class Paper { 
     public string Name { get; set; } 
     public string Color { get; set; } 
     public string Thumb { get; set; } 
    } 
} 

Aber ich bekomme immer die

kann nicht Datentyp MyApp.Model.Paper

Fehler

Ich hoffe, jemand lösen kann mir helfen, dieses Problem zu beheben. Vielen Dank.

+0

Worauf verweist 'x' in der Kopfzeile Ihrer XAML-Datei? – user3185569

+0

Ich habe gerade das komplette Header-Markup hinzugefügt! @ user3185569 –

Antwort

1

Soweit ich weiß, können wir das x:DataType Markup von namespace.class Format nicht festlegen. Um auf Ihre eigenen benutzerdefinierten Typen zuzugreifen, können Sie einen XAML-Namespace zuordnen. Diese Zuordnung wird durch Definieren eines Präfixes xmlns vorgenommen. Beispiel: xmlns:myTypes definiert einen neuen XAML-Namespace, auf den durch Voranstellen aller Verwendungen mit dem Token myTypes: zugegriffen wird.

Fügen Sie also diese Zuordnung xmlns:model="using:MyApp.Model" zu Ihrer Header-Markup-Liste hinzu. Und aktualisiert den XAML-Code für x:DataType wie folgt: <DataTemplate x:DataType="model:Paper" >, dann bauen Sie Ihr Projekt wird es funktionieren.

Weitere Details bitte Referenz Mapping custom types to XAML namespaces and prefixes.