2011-09-23 14 views
5

sto cercando di creare un DataTemplate per mappare un semplice tipo di dati con una corrispondente vista come segue:Come definire i modelli di dati impliciti in Metro XAML?

<DataTemplate DataType="{x:Type src:Person}"> 
    <TextBox Text="{Binding Name}"/> 
</DataTemplate> 

ottengo un errore del compilatore che indica che la proprietà DataType non viene riconosciuto o accessibili. Mi sto perdendo qualcosa qui? C'è una nuova sintassi per fare questo o la funzione è mancante? Esistono soluzioni alternative per i modelli impliciti?

Per riferimento, ecco il codice completo con il DataTemplate qualificato utilizzando un attributo x: Key (che funziona):

<UserControl x:Class="Metro_App.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:src="clr-namespace:Metro_App" 
    mc:Ignorable="d" 
    d:DesignHeight="768" d:DesignWidth="1366"> 

    <UserControl.Resources>   
     <DataTemplate x:Key="PersonTemplate"> 
      <TextBlock Text="{Binding Name}" Foreground="White" FontSize="72"/> 
     </DataTemplate> 
    </UserControl.Resources> 

    <Grid x:Name="LayoutRoot" Background="#FF0C0C0C"> 
     <ContentControl Content="{Binding MyPerson}" ContentTemplate="{StaticResource PersonTemplate}"/> 
    </Grid> 

</UserControl> 

risposta

9

Con WinRT, la sintassi per la mappatura degli spazi dei nomi CLR in XAML è diversa. Si dovrebbe cambiare si mappatura da:

xmlns:src="clr-namespace:Metro_App" 

a

xmlns:src="using:Metro_App" 

Per ulteriori informazioni sullo spostamento da Silverlight per WinRT, vedere la series of blog posts by Morten Nielsen, o l'articolo che ho scritto su creating a cross platform Silverlight/WinRT application.

Tuttavia ... se si guarda allo API documentation for DataTemplate you will find that there is not DataType property. All'interno di WinRT è presente uno stile implicito, ma non i modelli di dati impliciti.

+0

C'è 'DataTemplateKey', tuttavia, che è intrigante. –

+0

Sì, lo è. Forse un'indicazione che i modelli impliciti stanno arrivando? – ColinE

-3

Avere si definisce spazio dei nomi? xmlns: src = "CLR-namespace: WpfApplicationNamespace"

<Window x:Class="WpfApplicationNamespace.MainWindow" 
    xmlns:src="clr-namespace:WpfApplicationNamespace" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 

<Window.Resources> 
    <DataTemplate DataType="{x:Type src:Persone}"/> 
</Window.Resources> 
<Grid> 
    <StackPanel Orientation="Vertical"> 
     <Button Content="fffff" Click="Button_Click" /> 
    </StackPanel> 
</Grid> 
</Window> 
+0

Sì, sì. Ho modificato il mio post originale con il full MainPage.xaml incollato. – robzhu

+1

@Radik WinRT utilizza una sintassi diversa per i mapping namepsace. – ColinE

+0

è triste ora dovremmo sapere entrambi – Radik

2

Silverlight non ha DataTemplate.DataType, e ho il sospetto che quadro di Windows XAML ereditato questa limitazione. Potrebbe invece essere necessario utilizzare DataTemplateSelector.

È interessante notare che ha la classe DataTemplateKey, ma l'istanziazione da XAML non funziona.

Problemi correlati