2011-09-23 55 views
5

我想創建一個DataTemplate用於如下用相應的視圖映射爲簡單數據類型:如何在Metro XAML中定義隱式數據模板?

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

我得到指示的數據類型屬性無法識別或訪問的編譯器錯誤。我在這裏錯過了什麼嗎?有沒有新的語法做這個或缺少的功能?是否有隱式模板的替代解決方案?

供參考,在這裏與DataTemplate中的全部代碼使用合格的X:Key特性(工作):

<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> 

回答

9

使用WinRT,將CLR命名空間映射到XAML的語法是不同的。你應該改變你的映射從:

xmlns:src="clr-namespace:Metro_App" 

xmlns:src="using:Metro_App" 

如需進一步信息從Silverlight的移動WinRT中,看到series of blog posts by Morten Nielsen或文章中,我寫了一篇關於creating a cross platform Silverlight/WinRT application。如果你看看API documentation for DataTemplate you will find that there is not DataType property。在WinRT中有隱式樣式,但不包含隱式數據模板。

+0

然而,有'DataTemplateKey',這是很有趣的。 –

+0

是的。也許暗示隱含的模板正在他們的路上? – ColinE

-3

你有沒有定義命名空間? 的xmlns:SRC = 「CLR的命名空間: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

是的,我有。我已經粘貼了完整的MainPage.xaml編輯了我的原始文章。 – robzhu

+1

@Radik WinRT對namepsace映射使用了不同的語法。 – ColinE

+0

現在很難過現在我們應該知道他們兩個 – Radik

2

Silverlight不具有DataTemplate.DataType,我懷疑的Windows XAML框架繼承了限制。您可能必須改用DataTemplateSelector

有趣的是,它確實有DataTemplateKey類,但從XAML實例化它不起作用。

相關問題